前言
生命不息,奋斗不止。
对于日常使用python的通用框架unittest+HTMLTestRunner来说,再学习一个新框架主要是为了脱离python鄙视链,O(∩_∩)O哈哈~
python鄙视链:pytest 鄙视 > unittest 鄙视 > robotframework 鄙视 > 记流水账 鄙视 > "hello world"小白
一、pytest介绍
pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:
- 1、简单灵活,容易上手,文档丰富;
- 2、支持参数化,可以细粒度地控制要测试的测试用例;
- 3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
- 4、pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
- 5、测试用例的skip和xfail处理;
- 6、可以很好的和CI工具结合,例如jenkins
- 7、能自动的发现测试模块和测试方法
- 8、断言使用assert+表达式即可
二、pytest环境搭建
官方手册地址 https://docs.pytest.org/en/latest/getting-started.html#install-pytest
1.安装pytest
pip install pytest
pytest --version #查看安装的版本 验证是否安装成功
2.安装html报告插件
pip install pytest-html
除开 pytest-html插件外 ,pytest还具备丰富的插件库
pytest插件汇总站点:http://plugincompat.herokuapp.com/
三、应用案例
编写规则
编写pytest测试样例非常简单,只需要按照下面的规则:
- 测试文件以test_开头(以_test结尾也可以)
- 测试类以Test开头,并且不能带有 init 方法
- 测试函数以test_开头
- 断言使用基本的assert即可
1、创建一个文件为:test_demo.py
#!/usr/bin/python3 # -*- coding: utf-8 -*- def test_1(): assert 1==1
2.运行
运行有两种方式
第一种,通过dos命令或者pycharm的命令窗口输入pytest
结果如下:
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 (venv) E:学习pytest_code>pytest ============================================================ test session starts ============================================================ platform win32 -- Python 3.6.5, pytest-4.5.0, py-1.8.0, pluggy-0.12.0 rootdir: E:学习pytest_code collected 1 item test_demo.py . [100%] ========================================================= 1 passed in 0.02 seconds ==========================================================
注意:输入pytest时候,会自动的收集case并执行
pytest收集用例的规则
1.默认从当前目录中搜索case,即在哪个目录下运行pytest命令,则从哪个目录中搜索
2.可以通过 pytest 地址 指定搜索的目录
第二种:通过主函数在代码中运行,注意:需要导包
#!/usr/bin/python3 # -*- coding: utf-8 -*- import pytest def test_1(): assert 1==1 if __name__ == '__main__': pytest.main()