我用新的virtualenv创建一个简单的新项目。 requirements.txt
只有pytest
,就是这样。
.
├── requirements.txt
└── tests
├── __init__.py
└── sample_tests.py
sample_tests.py
:
import pytest
@pytest.mark.unit
def test_a():
assert 1 + 1 == 2
如果我使用python测试文件名运行pytest,则工作正常:
vex --path ~/.virtualenvs/pytestdemo pytest tests/sample_tests.py
但是,以下任何调用均无效。他们所有人都看不到测试并输出collected 0 items
和no tests ran
:
vex --path ~/.virtualenvs/pytestdemo pytest tests
vex --path ~/.virtualenvs/pytestdemo pytest tests/
vex --path ~/.virtualenvs/pytestdemo pytest
vex --path ~/.virtualenvs/pytestdemo python -m pytest tests
vex --path ~/.virtualenvs/pytestdemo python -m pytest tests/
vex --path ~/.virtualenvs/pytestdemo python -m pytest
在这个简单的场景中,我只有一个测试文件和一个测试,但是在我的实际应用程序中,我有很多测试,并且我希望通过简单的调用来运行所有这些测试。我将方案的范围缩小到了这个超级简单的隔离示例,并且我希望获得非常基本的测试调用来工作。
我已经仔细阅读了文档和入门指南。我尝试使用(而不是使用)自定义pytest.ini
。显然,我尝试通过pytest
和python -m pytest
来调用。
答案 0 :(得分:0)
默认情况下,pytest
仅在docs中名为test_*.py
或*_test.py
的文件中发现测试。这就是为什么当您直接将文件名作为参数传递时,它会在文件中找到测试的原因:
vex --path ~/.virtualenvs/pytestdemo pytest tests/sample_tests.py
并且在其他调用中找不到它们。因此,您的选择是: