我有一个Python类,对于该类的一个方法,我希望每个调用该方法的测试都调用该方法模拟版本。例如,如果我有这个类:
class TestClass:
def func():
print("func")
这些测试(使用pytest(:
def test_1():
myTestObj1 = TestClass()
myTestObj1.func()
def test_2():
myTestObj2 = TestClass()
myTestObj2.func()
我如何模拟这个类,使两个测试用例都调用一个什么都不做的func
版本,同时不影响TestClass
的任何其他方法?
您可以在测试内部使用pytest-mock
修补func
。
https://pytest-mock.readthedocs.io/en/latest/
import pytest
class TestClass:
def func(self):
return "Func"
@pytest.fixture(scope="function")
def class_fixture():
yield TestClass()
def test_1(class_fixture, mocker):
mocker.patch.object(TestClass, "func", return_value = None)
assert class_fixture.func() == None
def test_2(class_fixture):
assert class_fixture.func() == "Func"