代码质量保证-单元测试框架pytest

Posted TestOps

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码质量保证-单元测试框架pytest相关的知识,希望对你有一定的参考价值。


点击 “TestOops”  可以订阅哦!

代码质量保证-单元测试框架pytest

本周TestOps免费试听课课程表
时间
主题
4.1(周三)20:00
单元测试框架-pytest

代码质量保证-单元测试框架pytest

在这周三的测试运维试听课程中,芒果给大家介绍了一个非常好用的python单元测试框架——pytest,这里我们来做个小总结。




单元测试介绍

单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作。一般而言,最小可测试单元通常是指函数或者类。

要做好单元测试,你首先必须弄清楚单元测试的对象是代码,以及代码的基本特征和产生错误的原因,然后你必须掌握单元测试的基本方法和主要技术手段,比如什么是驱动代码、桩代码和 Mock 代码等。

今天要给大家介绍的单元测试框架-pytest就是实现驱动代码的利器。




pytest介绍

pytest是一个非常成熟的 Python测试框架,可以做到做个场景的测试工作,如:单元测试、接口测试、web测试等。

  • pytest-selenium(集成selenium)、

  • pytest-html(完美html测试报告生成)、

  • pytest-rerunfailures(失败case重复执行)、

  • pytest-xdist(多CPU分发)

  • 测试用例的skip和xfail处理

  • 可以很好的和jenkins集成


pytest 是一个插件化平台,这就是它比 unittest 强大的原因,丰富的插件扩展增强了它的功能,也可以根据自己的需要定制化开发自己的插件,非常的灵活。


pytest 安装:

    pip install pytest




pytest用例编写

测试用例的编写必须使用test_开头,测试用例文件必须以test_或者_test结束。

示例:

代码质量保证-单元测试框架pytest

上面示例中,我们使用python内置的断言方式assert来进行断言。


如果包含多个测试用例,我们可以使用多个以test_开头的测试用例函数,或者使用以Test开头的测试用例类。

示例:

代码质量保证-单元测试框架pytest


上面有说到pytest 允许您使用标准的python assert 用于验证Python测试中的期望和值。断言函数返回某个值,如果此断言失败,将看到函数调用的返回值,pytest 支持显示最常见的子表达式的值,包括调用、属性、比较以及二进制和一元运算符。

除此之外为了编写有关引发的异常的断言,可以使用 pytest.raises 作为这样的上下文管理器。

示例:

代码质量保证-单元测试框架pytest




pytest用例执行

pytest可以使用命令行的方式执行测试用例

代码质量保证-单元测试框架pytest


其执行结果代码如下

代码质量保证-单元测试框架pytest


通过使用 pytest.mark 帮助您轻松地在测试函数上设置元数据。有一些内置标记,例如:

  • skip -总是跳过测试函数

  • skipif -如果满足某个条件,则跳过测试函数

  • xfail -如果满足某个条件,则产生“预期失败”结果

  • parametrize -对同一测试函数执行多个调用

示例:

代码质量保证-单元测试框架pytest

parametrize 标记除了简单的入参参数化外,还可以对单个测试实例应用诸如skip和xfail之类的标记。

示例:

代码质量保证-单元测试框架pytest





pytest测试报告

使用 -r 参数:可用于在测试会话结束时显示“简短测试摘要信息”,使大型测试套件中的所有故障、跳过、xfails等的清晰图像变得容易。

-r 选项接受其后面的字符数,使用 a 上面的意思是“除通行证外的所有通行证”。以下是可用字符的完整列表:

f -失败

E -误差

s -跳过

x -失败

X -XPASS

p -通过

P -通过输出

a - all except pP

A -所有


上面测试用例的测试结果为:

代码质量保证-单元测试框架pytest


使用 -resultlog 参数:可用于在测试会话结束时生成文本格式报告文件

执行:

pytest test_pytest.py --resultlog=report.txt


当然也可以以其他方式生成测试报告


使用第三方插件pytest-html :

可用于在测试会话结束时生成html格式报告文件

执行:

pytest test_pytest.py --html=result.html

html报告需要安装pytest-html:  

pip install -U pytest-html


生成JUnitXml格式报告:

该格式方便与CI服务器进行集成

执行:

pytest test_pytest.py --junitxml=report.xml


使用--pastebin将向远程粘贴服务提交测试运行信息,并为结果提供一个URL;

可以像往常一样选择测试或添加例如 -x 如果你只想发送一个特定的失败;

当前仅实现粘贴到http://bpaste.net服务

执行:

pytest test_pytest.py --pastebin=all

结果显示:

代码质量保证-单元测试框架pytest


后续的啰啰嗦嗦




当然除了课程内容除了这些基本的介绍,芒果还给大家介绍了如何做好单元测试、pytest fixture、pytest与unittest对比等内容。
想要深入学习的同学,可以以点击下方原文、长按本文开头的二维码进入课程,找芒果可以免费领取课程视频哟。

芒果微信:
代码质量保证-单元测试框架pytest

精益技术 赋能过程


点击右上角"..."将好文分享给朋友吧



好看请点这里~

以上是关于代码质量保证-单元测试框架pytest的主要内容,如果未能解决你的问题,请参考以下文章

pytest文档57-计算单元测试代码覆盖率(pytest-cov)

Python- unittest 单元测试 (测试框架)和pytest 的区别

Pytest基础自学系列

python - pytest

使用 Pytest 框架进行 Argparse 测试

用 pytest 测试 python 代码