如何让pytest根据模块名称而不是路径进行发现

How do get pytest to do discovery based on module name, and not path

我正在考虑从 unittest 转到 pytest。我喜欢做的一件事是从已安装的模块中执行 setup.py install 然后 运行 测试,而不是直接从源代码执行。这意味着我拾取了我忘记包含在 MANIFEST.in.

中的所有文件

使用unittest,我可以让测试运行ner通过指定根测试模块来进行测试发现。例如python -m unittest myproj.tests

有没有办法用 pytest 做到这一点?

我正在使用以下 hack,但我希望有一种更简洁的内置方式。

pytest $(python -c 'import myproj.tests; print(myproj.tests.__path__[0])')

使用 pytest,您可以改为指定根测试目录的路径。它将 运行 pytest 能够发现的所有测试。您可以在 pytest good practices

中找到更多详细信息

Tests as part of application section of pytest good practices 表示如果您的测试可在 myproj.tests、运行:

py.test --pyargs myproj.tests