我决定在一个类中进行一堆测试,示例代码如下:
class IntegrationTests:
@pytest.mark.integrationtest
@pytest.mark.asyncio
async def test_job(self):
assert await do_stuff()
但是,当我尝试运行测试时:
pipenv run pytest -v -m integrationtest
,根本没有检测到它们,在将它们移到班级之前,我得到了以下信息:
5 passed, 4 deselected in 0.78 seconds
我现在得到这个:
2 passed, 4 deselected in 0.51 seconds
为什么pytest
无法检测到这些测试?不支持测试类吗?
答案 0 :(得分:3)
该类的名称必须以Test
开头,以便pytest发现才能找到它。
class TestIntegration:
@pytest.mark.integrationtest
@pytest.mark.asyncio
async def test_job(self):
assert await do_stuff()
答案 1 :(得分:1)
来自the docs:
如果需要更改测试文件,类和测试的命名约定,则可以创建文件
pytest.ini
,并设置选项python_files
,python_classes
和{{ 1}}:
python_functions
对于您来说,如果您不想更改类# content of pytest.ini
# Example 1: have pytest look for "check" instead of "test"
# can also be defined in tox.ini or setup.cfg file, although the section
# name in setup.cfg files should be "tool:pytest"
[pytest]
python_files = check_*.py
python_classes = *Tests
python_functions = *_check
的名称,请将IntegrationTests
设置为python_classes
。
*Tests
pytest /path/to/test_file_name.py::ClassName
答案 2 :(得分:0)
要在“ TestIntegration”类下运行所有测试,可以使用:
pytest -k TestIntegration