给出一个目录tests
,其中包含几个子目录,每个子目录都包含测试模块,那么如何创建一个pytest
固定装置,使其仅在特定子目录中的每个测试之前运行?
tests
├── __init__.py
├── subdirXX
│ ├── test_module1.py
│ ├── test_module2.py
│ ├── __init__.py
├── subdirYY
│ ├── test_module3.py
│ ├── test_module4.py
│ ├── __init__.py
我想拥有一种夹具,该夹具只能在subdirYY
内的模块(在这种情况下,在模块test_module3.py
和test_module4.py
中找到的每个测试之前运行)。
我目前有两次定义的灯具,一次在subdirYY
内的每个模块中,它可以工作,但是很多余:
@pytest.fixture(autouse=True)
def clean_directory():
...
如果无法实现,则subdirYY
内的每个测试都用一个自定义标记(@pytest.mark.mycustommark
)装饰,因此请确保在每个测试之前,都必须运行特定的夹具。特殊的自定义标记也是可行的选择。
答案 0 :(得分:1)
将您的自动使用夹具放在conftest.py
内的subdirYY
文件中。
有关更多信息,请参阅关于sharing fixtures的pytest文档和autouse fixtures上的文档,其中特别提到了conftest.py
:
如果在conftest.py文件中定义了自动使用的固定装置,则其目录下所有测试模块中的所有测试都将调用固定装置。