Python常用的测试框架
Python有几种常用的测试框架,包括:
- unittest:这是Python标准库中自带的单元测试框架。它支持测试自动化、测试套件和测试报告生成等功能。
- pytest:这是一个第三方单元测试框架,提供了简洁的语法来编写测试用例。它具有丰富的插件生态,并且能够支持简单的单元测试和复杂的功能测试。
- nose:这也是一个第三方单元测试框架,它能够自动发现并运行测试用例。不过,nose目前已经进入维护模式,不再进行新的开发。
除了这些常用的测试框架,还有一些其他的选择,如Robot Framework、Behave和Lettuce等。你可以根据自己的需求选择合适的测试框架。
Pytest介绍
pytest是一个非常成熟的全功能的Python测试框架,它可以帮助你编写更好的程序。它能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)。它具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等。
Pytest安装
可以通过pip来安装pytest。在命令行中输入以下命令即可安装pytest:
pip install -U pytest
安装完成后,你可以通过运行以下命令来验证安装是否成功:
pytest --version
这将会显示当前已安装的pytest版本。
Pytest使用
要使用pytest,需要编写测试文件。测试文件的名称应该以test_开头或以_test结尾。在测试文件中,可以定义测试函数,它们的名称应该以test_开头。例如,下面是一个简单的测试文件示例:
# content of test_sample.py
def inc(x):
return x + 1
def test_answer():
assert inc(3) == 4
在这个示例中,我们定义了一个名为inc的函数,它接受一个参数并返回该参数加1的结果。然后我们定义了一个名为test_answer的测试函数,它使用断言语句来检查inc(3)的返回值是否等于4。
要运行这个测试文件,你可以在命令行中使用pytest命令并指定测试文件的名称:
pytest test_sample.py
pytest将自动发现并运行测试文件中的所有测试函数。如果所有测试都通过,pytest将输出类似于以下内容的信息:
============================= test session starts ==============================
platform linux -- Python 3.x.y, pytest-7.x.y, py-1.x.y, pluggy-1.x.y
rootdir: /home/user
collected 1 item
test_sample.py . [100%]
============================== 1 passed in 0.12s ===============================
如果有任何测试失败,pytest将输出详细的错误信息,帮助你诊断问题。
这只是pytest的基础用法。pytest还提供了许多高级功能,如参数化测试、模块化fixture和丰富的插件体系。可以访问pytest官方文档来了解更多关于如何使用pytest的信息。
Pytest失败用例复跑
在pytest中,你可以使用--lf(--last-failed)选项来只运行上一次失败的测试用例。例如,如果你在命令行中运行以下命令:
pytest --lf
那么pytest将只运行上一次失败的测试用例。如果所有测试都通过,那么pytest将不运行任何测试。
你也可以使用–ff(--failed-first)选项来先运行上一次失败的测试用例,然后再运行其他测试用例。例如,如果在命令行中运行以下命令:
pytest --ff
那么pytest将先运行上一次失败的测试用例,然后再运行其他测试用例。
Pytest常用插件
pytest有许多常用的插件,可以帮助你扩展pytest的功能。下面是一些常见的pytest插件:
- pytest-xdist:这个插件可以让你并行运行测试,以加快测试速度。
- pytest-cov:这个插件可以帮助你度量代码覆盖率。
- pytest-html:这个插件可以生成HTML格式的测试报告。
- pytest-mock:这个插件提供了一个
mockerfixture,可以帮助你轻松地创建和使用mock对象。
- pytest-bdd:这个插件提供了对行为驱动开发(BDD)风格测试的支持。
这只是一小部分常用的pytest插件。可以在PyPI上搜索“pytest”来查看所有可用的pytest插件。