python-3.x Pytest fixture不应该被直接调用

wko9yo5t  于 2023-01-27  发布在  Python
关注(0)|答案(1)|浏览(486)

我想在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
enxuqcxy

enxuqcxy1#

fixture的名称是pytest_runtest_setup,它实际上是一个被覆盖的钩子,
调用以执行测试项的设置阶段。
所以直接 * 被 * 调用。
Pytest 6不支持直接调用fixture
已在版本4.0中删除。
不推荐直接调用fixture函数,而不是在测试函数中请求它们。
将fixture重命名为runtest_setup或其他名称,只要fixture名称在conftest.py中不以pytest_开头,否则它将被识别为钩子(当位于测试文件中时,名称没有问题)。

相关问题