Pytest:模拟整个测试模块对方法的每次调用



我有一个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"

最新更新