时间:2021-05-23
python通用测试框架大多数人用的是unittest+HTMLTestRunner,这段时间看到了pytest文档,发现这个框架和丰富的plugins很好用,所以来学习下pytest.
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
安装pytest:
pip install -U pytest验证安装的版本:
pytest --version几个pytest documentation中的例子:
例子1:
import pytest# content of test_sample.pydef func(x): return x + 1def test_answer(): assert func(3) == 5命令行切换到文件所在目录,执行测试(也可以直接在IDE中运行):
这个测试返回一个失败报告,因为func(3)不返回5。
例子2:
当需要编写多个测试样例的时候,我们可以将其放到一个测试类当中,如:
class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): x = "hello" assert hasattr(x, 'check')运行以上例子:
从测试结果中可以看到,该测试共执行了两个测试样例,一个失败一个成功。同样,我们也看到失败样例的详细信息,和执行过程中的中间结果。-q即-quiet,作用是减少冗长,具体就是不再展示pytest的版本信息。
如何编写pytest测试样例
通过上面2个实例,我们发现编写pytest测试样例非常简单,只需要按照下面的规则:
运行模式
Pytest的多种运行模式,让测试和调试变得更加得心应手,下面介绍5种常用的模式。在介绍之前需要提醒一句,运行pytest时会找当前目录及其子目录中的所有test_*.py 或 *_test.py格式的文件以及以test开头的方法或者class,不然就会提示找不到可以运行的case了。
1.运行后生成测试报告(htmlReport)
安装pytest-html:
pip install -U pytest-html运行模式:
pytest --html=report.html报告效果:
在以上报告中可以清晰的看到测试结果和错误原因,定位问题很容易。
2.运行指定的case
当我们写了较多的cases时,如果每次都要全部运行一遍,无疑是很浪费时间的,通过指定case来运行就很方便了。
例子代码:
class TestClassOne(object): def test_one(self): x = "this" assert 't'in x def test_two(self): x = "hello" assert hasattr(x, 'check')class TestClassTwo(object): def test_one(self): x = "iphone" assert 'p'in x def test_two(self): x = "apple" assert hasattr(x, 'check')运行模式:
模式1:直接运行test_se.py文件中的所有cases:
pytest test_se.py模式2:运行test_se.py文件中的TestClassOne这个class下的两个cases:
pytest test_se.py::TestClassOne模式3:运行test_se.py文件中的TestClassTwo这个class下的test_one:
注意:定义class时,需要以T开头,不然pytest是不会去运行该class的。
3.多进程运行cases
当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。
安装pytest-xdist:
pip install -U pytest-xdist运行模式:
pytest test_se.py -n NUM其中NUM填写并发的进程数。
4.重试运行cases
在做接口测试时,有事会遇到503或短时的网络波动,导致case运行失败,而这并非是我们期望的结果,此时可以就可以通过重试运行cases的方式来解决。
安装pytest-rerunfailures:
pip install -U pytest-rerunfailures运行模式:
pytest test_se.py --reruns NUMNUM填写重试的次数。
5.显示print内容
在运行测试脚本时,为了调试或打印一些内容,我们会在代码中加一些print内容,但是在运行pytest时,这些内容不会显示出来。如果带上-s,就可以显示了。
运行模式:
pytest test_se.py -s另外,pytest的多种运行模式是可以叠加执行的,比如说,你想同时运行4个进程,又想打印出print的内容。
可以用:
pytest test_se.py -s -n 4以上就是Python测试框架:pytest学习笔记的详细内容,更多关于python pytest的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
fixture函数存在意义 与python自带的unitest测试框架中的setup、teardown类似,pytest提供了fixture函数用以在测试执行
之前,我曾转过一个单元测试框架系列的文章,里面介绍了unittest、nose/nose2与pytest这三个最受人欢迎的Python测试框架。本文想针对测试中
pytest介绍pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:1、简单灵活,容易上手,文档丰富;2、支持参数化,可以细粒度地控制
以下是作者在学习Python中django框架时的学习笔记,并把测试的代码做了详细分析,最后还附上了学习心得,值得大家学习。URL配置(URLconf)就像Dj
前言pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作。pytest提供了丰富的功能,包括assert重写,第三方插件,