Pytest:测试文件中具有模块范围的夹具可以工作,但是在conftest.py中会引发错误

时间:2018-07-31 10:03:39

标签: python python-3.x pytest

在结构项目中测试@pytest.fixture(scope="module")

├── main.py
├── pytest.ini
├── src
│   └── tasks
│       ├── __init__.py
│       └── conftest.py
└── tests
    └── func
        └── test_authors.py

pytest.ini包含

[pytest]
xfail_strict=true

当灯具包含在测试文件-tests/func/test_authors.py中时,测试工作正常

import json, pytest


@pytest.fixture(scope='module')
def author_file_json(tmpdir_factory):
    python_author_data = {
        'Ned': {'City': 'Boston'},
        'Brian': {'City': 'Portland'},
        'Luciano': {'City': 'Sau Paulo'}
    }

    file = tmpdir_factory.mktemp('data').join('author_file.json')
    print('file:{}'.format(str(file)))

    with file.open('w') as f:
        json.dump(python_author_data, f)
    return file


def test_brian_in_portland(author_file_json):
    with author_file_json.open() as f:
        authors = json.load(f)
    assert authors['Brian']['City'] == 'Portland'
  • 如果我将灯具author_file_json添加到conftest.py
    • 并运行pytest --fixtures
      • 它显示在跟踪中
    • 但是现在如果我运行pytest tests/test_authors.py
      • 我收到错误消息-E fixture 'author_file_json' not found

我该如何解决?

1 个答案:

答案 0 :(得分:1)

conftest.py文件放在与测试文件目录(func)或项目工作区中的测试用例文件的父目录之一相同的位置({{1 }}或tests)。当前,您在pytest不会扫描的同级目录root dir of your project中拥有它。