我在conftest.py中遇到问题
@pytest.fixture(scope="function", autouse=True)
@pytest.mark.usefixtures
def pause_on_assert():
yield
if hasattr(sys, 'last_value') and isinstance(sys.last_value, AssertionError):
tkinter.messagebox.showinfo(sys.last_value)
与此类似,conftest.py中还有许多其他约束,作用域为
session
,module
我的测试用例看起来像这样
test.py
@pytest.fixture(scope="function", autouse=True)
def _wrapper:
print("pre condition")
yield
print("post condition")
def test_abc():
assert 1==0
问题是我想让conftest.py中的夹具在测试用例中的夹具的
yield
之前运行如何更改治具的执行顺序
最佳答案
如果要确保在测试功能之后但在所有固定装置拆除之前运行一段代码,我建议改为使用 pytest_runtest_teardown
钩子(Hook)。将pause_on_assert
中的conftest.py
固定装置替换为:
def pytest_runtest_teardown(item, nextitem):
if hasattr(sys, 'last_value') and isinstance(sys.last_value, AssertionError):
tkinter.messagebox.showinfo(sys.last_value)
关于python - 更改在pytest中调用固定装置的方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59391029/