Pytest是一个流行的Python测试框架,它可以轻松地编写简单和复杂的测试,提供了丰富的断言、插件机制以及丰富的控制台输出信息,可以有效地将测试结果以易懂的方式显示给用户。以下是Pytest运行及其控制台输出信息的完整攻略:
安装Pytest
要使用Pytest,需要先安装它。可以使用以下命令来安装:
pip install pytest
编写测试脚本
在写测试脚本之前,需要先安装被测代码所需的依赖项。假设需要测试的代码在一个名为“example”的文件夹中,可以使用以下命令来安装其依赖项:
pip install -r example/requirements.txt
然后,编写test_.py形式的测试脚本,其中表示任何名称。在测试脚本中,使用Pytest提供的模块级别的fixture和assert语句来编写测试用例。测试脚本中所有以test_开头的函数都会被Pytest识别为测试用例。
下面是一个测试样例test_sample.py:
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
这个测试用例是错误的,所以在运行这个测试用例之前,需要解决错误。
运行测试脚本
使用以下命令运行测试脚本:
pytest
在测试脚本所在的目录中,执行此命令将自动发现和运行测试脚本。如果测试用例预期的结果与实际结果不同,则测试用例会失败。
控制台输出信息
Pytest提供了丰富的控制台输出信息,用于向用户显示测试结果的详细信息,帮助用户快速识别错误并调试问题。
以下是Pytest的一些控制台输出信息的解释:
- 以“.”表示测试用例已成功地通过测试;
- 以“F”表示测试用例已经失败;
- 以“x”表示测试用例被框架忽略,通常是由于fixture未被正确处理或者没有传递测试参数;
- 以“s”表示测试用例在执行时发生了异常;
- 显示每个测试用例的名称以及关于该用例的详细信息和错误信息;
示例1
以下是test_sample.py测试脚本在控制台输出信息:
pytest test_sample.py
====================================== test session starts =======================================
platform win32 -- Python 3.6.8, pytest-6.0.0, py-1.9.0, pluggy-0.13.1
rootdir: C:\Users\Administrator\PycharmProjects\pytest_test
collected 1 item
test_sample.py F [100%]
============================================ FAILURES ============================================
_________________________________________ test_answer _________________________________________
def test_answer():
> assert func(3) == 5
E assert 4 == 5
E + where 4 = func(3)
test_sample.py:5: AssertionError
=================================== short test summary info ===================================
FAILED test_sample.py::test_answer - assert 4 == 5
===================================== 1 failed in 0.08s =====================================
可以看到,测试脚本test_sample.py包含了一个测试用例test_answer()。这个测试用例包含了一个断言,但是断言没有通过。在控制台输出信息中,以“F”表示该测试用例已经失败,并显示了详细的错误信息。在错误信息中,可以看到断言检查的返回值(4)和期望值(5)。
示例2
可以使用以下命令来获取更多Pytest控制台输出信息:
pytest -v
以下是test_sample.py测试脚本在控制台输出信息:
pytest -v test_sample.py
====================================== test session starts =======================================
platform win32 -- Python 3.6.8, pytest-6.0.0, py-1.9.0, pluggy-0.13.1 -- c:\python\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\Administrator\PycharmProjects\pytest_test
collected 1 item
test_sample.py::test_answer FAILED [100%]
============================================ FAILURES ============================================
_________________________________________ test_answer _________________________________________
def test_answer():
> assert func(3) == 5
E assert 4 == 5
E + where 4 = func(3)
test_sample.py:5: AssertionError
------------------------------------- Captured stdout setup -------------------------------------
WARNING: ExampleFixture not found in the current path
Running a fixture
------------------------------------- Captured stdout call -------------------------------------
print some details
------------------------------------- Captured stdout teardown -------------------------------------
fixture has shut down
=================================== short test summary info ===================================
FAILED test_sample.py::test_answer - assert 4 == 5
===================================== 1 failed in 0.05s =====================================
可以看到,使用“-v”命令将显示更多的控制台输出信息。此时,可以看到整个测试生命周期中的详细信息,包括fixture的执行和测试用例的执行过程。在这里可以看到,有一个名为ExampleFixture的fixture未找到,并且testing_setup()函数的输出详细信息被捕获。这些信息有助于用户分析测试用例不通过的原因。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytest运行及其控制台输出信息 - Python技术站