我想在www.example.com上设置一个fixture,并与我所有的测试共享它,但是,当我在下面的最小示例上运行pytest时,我遇到了以下错误:conftest.py and share it with all my tests. However, I run into the following error when running pytest on the following minimal example:
ERROR at setup of test_test
Fixture "pytest_runtest_setup" called directly. Fixtures are not meant to be called directly,
but are created automatically when test functions request them as parameters.
conftest.py
import pytest
import os
@pytest.fixture
def pytest_runtest_setup():
print("hello ? ---------------------------------")
test.py
import pytest
def test_test():
assert True
pytest.ini
[pytest]
addopts = -rA -v -p no:faulthandler -W ignore::DeprecationWarning
Pytest随pytest test.py
一起推出
fixture函数在任何地方都不能被直接调用,甚至在示例测试中也不能使用它,那么pytest为什么要抛出这个函数,以及如何在www.example.com中声明和使用fixtureconftest.py?
环境:
- Python 3.8.3语言
- 高温试验-6.1.2
1条答案
按热度按时间enxuqcxy1#
fixture的名称是
pytest_runtest_setup
,它实际上是一个被覆盖的钩子,调用以执行测试项的设置阶段。
所以直接 * 被 * 调用。
Pytest 6不支持直接调用
fixture
已在版本4.0中删除。
不推荐直接调用fixture函数,而不是在测试函数中请求它们。
将fixture重命名为
runtest_setup
或其他名称,只要fixture
名称在conftest.py
中不以pytest_
开头,否则它将被识别为钩子(当位于测试文件中时,名称没有问题)。