pytest基础。在目录中运行测试

时间:2019-04-25 16:47:14

标签: python pytest

我用新的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 itemsno 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。显然,我尝试通过pytestpython -m pytest来调用。

1 个答案:

答案 0 :(得分:0)

默认情况下,pytest仅在docs中名为test_*.py*_test.py的文件中发现测试。这就是为什么当您直接将文件名作为参数传递时,它会在文件中找到测试的原因:

vex --path ~/.virtualenvs/pytestdemo pytest tests/sample_tests.py 

并且在其他调用中找不到它们。因此,您的选择是:

  1. 更改文件名以适合默认的收集模式之一。
  2. Change standard test discovery.