如何使用pytest运行与生产代码位于同一文件中的测试?

时间:2018-07-09 10:58:31

标签: python testing pytest

我知道这违反了所有要求/假定正确包装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

1 个答案:

答案 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")