如何在pytest下测试单个文件


81

您如何在pytest中测试单个文件?我只能在文档中找到忽略选项,而没有“仅测试此文件”选项。

最好是在命令行而不是上运行setup.cfg,因为我想在ide中运行不同的文件测试。整个套件花费的时间太长。

Answers:


88

只需pytest使用文件的路径运行

就像是

pytest tests/unit/some_test_file.py


3
好的,这似乎是pycharm所做的,但它仍在运行整个套件。由于某些原因,在命令行上运行py.test会产生段错误。我想这超出了原始问题的范围,因此,如果我可以解决问题,我将接受您的回答。
simonzack '16

3
addopts如果在其中添加路径,显然在setup.cfg中会出现问题。
simonzack '16

1
@simonzack我猜您想从文件中存在的多个测试用例中运行一个测试用例。试试这个:py.test test_basic.py -k test_first这里test_first是我的test_basic.py文件中存在的一个测试用例。
阿努拉格·辛哈

67

这很简单:

$ pytest -v /path/to/test_file.py

-v标志是增加冗长。如果要在该文件中运行特定的测试,请执行以下操作:

$ pytest -v /path/to/test_file.py::test_name

如果您想测试哪些名称遵循模式,可以使用:

$ pytest -v -k "pattern_one or pattern_two" /path/to/test_file.py

您还可以选择标记测试,因此可以使用该-m标志来运行标记测试的子集。

test_file.py

def test_number_one():
    """Docstring"""
    assert 1 == 1


@pytest.mark.run_these_please
def test_number_two():
    """Docstring"""
    assert [1] == [1]

要运行标有的测试run_these_please

$ pytest -v -m run_these_please /path/to/test_file.py

2
对于path/to/test.py::test_method,我得到了错误>错误:未找到:/home/namgivu/NN/code/myproject/tests/models/test_bill.py::test_generate_for_today_normal_cycle(无名称'/ home / namgivu / NN / code / myproject / tests / models /test_bill.py::test_generate_for_today_normal_cycle在[<Module'tests / models / test_bill.py'>]中的任何一个)
Nam G VU

1
带有ID的参数化测试怎么样?-k my_test[a test id here]不起作用,到目前为止-k "my_test and a and test and id and here",我所能管理的最好的方法几乎不是一种友好的格式。
Paul D Smith

1
该示例中给出的示例(特别是一个混合路径和节点选择语法)应添加到pytest文档中,因为它确实不像IMO那样明显。
cjauvin

11

这对我有用:

python -m pytest -k some_test_file.py

这也适用于单个测试功能:

python -m pytest -k test_about_something

pytest directory_to_tests/some_test_file.py对我不起作用。我在Windows python 3.8.2和pytest 6.0.1上
minghua
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.