【发布时间】:2020-08-19 19:30:01
【问题描述】:
假设我有一个fixture 来模拟一个使用monkeypatch 的类。
# conftest.py
@pytest.fixture
def mock_dummyclass(monkeypatch):
def mock_function():
return None
monkeypatch.setattr(dummypackage, "dummyclass", mock_function)
现在,我必须在我的测试中使用这个夹具,以便模拟这个类。
#test_dummy.py
@pytest.mark.usefixtures("mock_dummyclass")
class TestManyDummyMethods:
def test_dummy_one():
import dummypackage # Flag A
def test_dummy_two():
import dummypackage # Flag B
...
def test_dummy_n():
import dummypackage # Flag N
正如您在标记行中看到的,我必须在每个函数中导入此模块dummypackage,以确保在导入模块之前应用夹具(否则夹具将无效)。
在类中导入dummypackage 会起作用,但在函数中调用self.dummypackage 似乎也不是很优雅。
有没有更优雅的方法来实现这一点?
【问题讨论】:
-
dummypackage可以在test_dummy.py之上导入,dummyclass将被成功修补。不过,from dummypackage import dummyclass不起作用。究竟是什么不工作,所以你诉诸移动进口?