为子目录下的测试定义一个单一的 conftest.py

2 投票
1 回答
2292 浏览
提问于 2025-04-18 09:04

我有一个应用程序,我的单元测试是这样组织的:

server/
  tests/
    conftest.py
    test_server.py
client/
  tests/
    conftest.py
    test_client.py

在这个设置中,由于conftest.py文件只包含与其相关的测试的配置,所以没有重复的配置。

现在我在添加集成测试,组织方式是这样的:

tests/
  conftest.py
  test_integration.py
server/
  tests/
    conftest.py
    test_server.py
client/
  tests/
    conftest.py
    test_client.py

这个新的conftest.py需要包含我在其他地方定义的所有配置。我该如何设置py.test,以避免重复client/tests/conftest.pyserver/tests/conftest.py中的所有配置呢?

最接近的类似问题是: 如何在使用pytest时组织配置

谢谢!

1 个回答

2

我处理这种情况的方法是把所有共享的测试工具(fixtures)移动到一个顶层的 conftest 文件里,像这样:

conftest.py
tests/
    [conftest.py]
    test_integration.py
server/
    tests/
        [conftest.py]
        test_server.py
client/
    tests/
        [conftest.py]
        test_client.py

这样做有时候会让事情看起来不太整洁,因为你会在顶层的 conftest.py 文件里放很多不太相关的测试工具,但这样做简单明了。

撰写回答