Python测试框架:pytest学习笔记
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
- 简单灵活,容易上手
- 支持参数化
- 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
- pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
- 测试用例的skip和xfail处理
- 可以很好的和jenkins集成
- report框架----allure 也支持了pytest
安装pytest:
pip install -U pytest验证安装的版本:
pytest --version几个pytest documentation中的例子:
例子1:
import pytest # content of test_sample.py def func(x): return x + 1 def 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测试样例非常简单,只需要按照下面的规则:
- 测试文件以test_开头(以_test结尾也可以)
- 测试类以Test开头,并且不能带有 init 方法
- 测试函数以test_开头
- 断言使用基本的assert即可
运行模式
"color: #ff0000">1.运行后生成测试报告(htmlReport)
安装pytest-html:
pip install -U pytest-html运行模式:
pytest --html=report.html报告效果:
在以上报告中可以清晰的看到测试结果和错误原因,定位问题很容易。
2.运行指定的case
"htmlcode">
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
"htmlcode">
pip install -U pytest-xdist运行模式:
pytest test_se.py -n NUM其中NUM填写并发的进程数。
4.重试运行cases
"htmlcode">
pip install -U pytest-rerunfailures运行模式:
pytest test_se.py --reruns NUMNUM填写重试的次数。
5.显示print内容
"htmlcode">
pytest test_se.py -s另外,pytest的多种运行模式是可以叠加执行的,比如说,你想同时运行4个进程,又想打印出print的内容。
"htmlcode">
pytest test_se.py -s -n 4以上就是Python测试框架:pytest学习笔记的详细内容,更多关于python pytest的资料请关注其它相关文章!
下一篇:如何让PyQt5中QWebEngineView与JavaScript交互