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

时间主题4.1(周三)20:00单元测试框架-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 pytestpytest用例编写测试用例的编写必须使用test_开头,测试用例文件必须以test_或者_test结束。示例:

上面示例中,我们使用python内置的断言方式assert来进行断言。如果包含多个测试用例,我们可以使用多个以test_开头的测试用例函数,或者使用以Test开头的测试用例类。示例:

上面有说到pytest 允许您使用标准的python assert 用于验证Python测试中的期望和值。断言函数返回某个值,如果此断言失败,将看到函数调用的返回值,pytest 支持显示最常见的子表达式的值,包括调用、属性、比较以及二进制和一元运算符。除此之外为了编写有关引发的异常的断言,可以使用 pytest.raises 作为这样的上下文管理器。示例:

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

其执行结果代码如下

通过使用 pytest.mark 帮助您轻松地在测试函数上设置元数据。有一些内置标记,例如:skip -总是跳过测试函数skipif -如果满足某个条件,则跳过测试函数xfail -如果满足某个条件,则产生“预期失败”结果parametrize -对同一测试函数执行多个调用示例:

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

pytest测试报告使用 -r 参数:可用于在测试会话结束时显示“简短测试摘要信息”,使大型测试套件中的所有故障、跳过、xfails等的清晰图像变得容易。-r 选项接受其后面的字符数,使用 a 上面的意思是“除通行证外的所有通行证”。以下是可用字符的完整列表:f -失败E -误差s -跳过x -失败X -XPASSp -通过P -通过输出a - all except pPA -所有上面测试用例的测试结果为:

使用 -resultlog 参数:可用于在测试会话结束时生成文本格式报告文件执行:pytest test_pytest.py --resultlog=report.txt当然也可以以其他方式生成测试报告使用第三方插件pytest-html :可用于在测试会话结束时生成html格式报告文件执行:pytest test_pytest.py --html=result.htmlhtml报告需要安装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 fixture、pytest与unittest对比等内容。

(0)

相关推荐

  • 测试开发面试题-给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例

    前言 给你一个字符串,你怎么判断是不是ipv4地址?手写这段代码,并写出测试用例 判断是不是ipv4地址 先要知道 ipv4 地址的格式:(1~255).(0~255).(0~255).(0~255) ...

  • pytest文档34-Hooks函数改变用例执行顺序(pytest_collection_modifyitems)

    前言 有一些小伙伴一直想改变pytest用例的执行顺序,实际上我们在用例设计原则上用例就不要有依赖顺序. pytest默认执行用例是先根据项目下的文件夹名称按ascii码去收集的,module里面的用 ...

  • 什么神器,竟然能自动检索、修复Python代码bug?

    机器之心报道 机器之心编辑部 还在为不断的 debug 代码烦恼吗? 本地化 Bug 并修复程序是软件开发过程中的重要任务.在本篇论文中,来自微软 Cloud+AI 部门的研究者介绍了 DeepDeb ...

  • 简单易懂的单元测试框架-gtest(一)

    简介 gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同时,gt ...

  • pytest文档66-工厂化的 fixtures

    前言 在一个测试用例中需要多次调用同一个fixture的时候,工厂化的 fixture 的模式对于一个 fixture 在单一的测试中需要被多次调用非常有用. 之前写fixture是直接return一 ...

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

    前言 我们在做测试的时候,经常遇到领导的灵魂拷问:你的测试用例覆盖率是多少,达到100%了么?你如何保证你的测试质量? 测试用例的覆盖率如何统计呢,如何知道开发的代码,我们都测到了,不会存在漏测的情况 ...

  • 这两个Python工具真香!修改代码不会影响运行

    你是否运行过for循环并希望在for循环内的代码中添加更多详细信息?你可能会决定不这样做,因为添加更多详细信息意味着需要停止代码并重新运行所有内容. 代码已经运行了几个小时,停止代码会让人不爽.如果可 ...

  • 如何编写接口测试用例?测试工程师必备技能!

    自动化始终只是辅助测试工作的一个手段,对于测试人员而言,测试基础和测试用例的设计才是核心.如果测试用例的覆盖率或者质量不高,那将这部分用例实现为自动化用例的意义也就不大了. 那么,接口测试用例应该怎么 ...

  • 如何做自动化测试

    这个话题比较大,相信大家也都有自己的想法,我在这里写一些我自己的看法,请大家指教. 什么叫做自动化测试工程师 首先,会使用自动化测试工具的测试人员不能够称之为完全的自动化测试人员,这类测试人员被称为『 ...

  • pytest文档69-Hook函数之参数化pytest_generate_tests

    前言 pytest 实现参数化有三种方式 pytest.fixture() 使用 fixture 传 params 参数实现参数化 @ pytest.mark.parametrize 允许在测试函数或 ...