我知道这违反了所有要求/假定正确包装Python生产代码的best practices:在某些情况下,能够在同一文件中定义生产和测试代码可能会有所帮助(例如,在简单的情况下)脚本)。那么如何使用pytest
在文件中运行所有或特定测试?
编辑-针对我的特定用例的解决方案:
<root>
中的文件结构:
pytest.ini
scrip_with_tests.py
pytest.ini
的内容:
[pytest]
python_files = script_with_tests.py
script_with_tests.py
的内容:
import pytest # this is not required, works without as well
def test_always_pass():
pass
if __name__ == "__main__":
main()
在pytest
中调用 <root>
:
pytest script_with_tests.py
答案 0 :(得分:2)
如Customizing test collection部分所述:
您可以轻松地指示
pytest
从每个Python文件中发现测试:# content of pytest.ini [pytest] python_files = *.py
但是,许多项目都将带有
setup.py
,而这些项目不希望被导入。此外,可能只有特定的python版本可以导入文件。在这种情况下,您可以通过在conftest.py
文件中列出文件来动态定义要忽略的文件:# content of conftest.py import sys collect_ignore = ["setup.py"] if sys.version_info[0] > 2: collect_ignore.append("pkg/module_py2.py")