Pytest 1 - Pytest 初识
1. Pytest简介
pytest是一个非常成熟的全功能的Python测试框架。
(1) 主要特点有以下几点:
- 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
Pytest与Robotframework相比,更加适合小公司。
(2) pytest有哪些优点?
- 允许直接使用assert进行断言,而不需要使用self.assert*;
- 可以自动寻找单测文件、类和函数;
- Modular fixtures可以用于管理小型或参数化的测试信息;
- 与unittest和nose单测框架兼容;
- 兼容性较好,支持Python 2.7,Python 3.4+。
- 丰富的插件支持,共计有超过315个插件支持;
2. 使用虚拟环境做Pytest测试
安装虚拟环境模块并创建虚拟环境
pip install virtualenv pip install virtualenvwrapper pip install virtualenvwrapper-win #Windows使用该命令 mkvirtualenv venv(安装虚拟环境的路径及目录名)
之后再次进入时,需要激活虚拟环境
cd venv/scripts
activate.bat
激活后会在左边显示(虚拟环境目录)
3. Pytest 安装相关模块
pip install pytest pip install pytest-html pip install pytest-rerunfailures
此外还有很多很好的第三方插件,请到http://plugincompat.herokuapp.com/ 和 https://pypi.python.org/pypi?%3Aaction=search&term=pytest-&submit=search 查找
4. Pytest Demo
(1) 在虚拟环境中创建一个文件夹来存储测试代码,例如code.
文件夹中创建测试代码(code\test_sample.py)
# content of test_sample.py def inc(x): return x + 1 def test_answer(): assert inc(3) == 5
code\test_class.py
# content of test_class.py class TestClass: def test_one(self): x = "this" assert 'h' in x def test_two(self): y = "this" assert hasattr(x, 'check')
(2) 使用pytest执行测试。
在虚拟环境的code路径下,cmd执行:
py.test
(3) pytest执行说明
# 默认会执行当前目录及子目录的所有test_*.py或*_test.py文件。用例执行成功为.,失败为F $ pytest # 静默执行 $ pytest -q 01\test_sample.py # 调试方式执行,可以打印print日志等详情信息 $ pytest 01\test_sample.py -s -v # python模块方式执行 $ python -m pytest 01\test_sample.py # 执行单个目录下的tests $ python 01\
(4) pytest 常见的exit code
Exit code 0 所有tests全部通过
Exit code 1 部分tests失败了
Exit code 2 用户中止test执行
Exit code 3 执行test时,内部报错
Exit code 4 pytest命令使用姿势不对
Exit code 5 无tests可执行
(5) pytest 常见帮助选项
$ pytest --version # 显示版本信息 $ pytest --fixtures # 显示内置可用的函数参数 $ pytest -h | --help # 显示帮助信息 $ pytest -x # 第一个失败时即停止 $ pytest --maxfail=2 # 两个失败后即停止
5. Pytest 生成日志
在code平行层级创建Log目录。运行一下命令以运行并生成指定日志。
(pyTest2) E:\01workspace\venv\pyTest2\code>py.test --resultlog=../Log/b.html
6. Pytest 生成报告
在虚拟环境中执行:
pip install pytest-html
在code平行层级创建Report目录。执行以下命令以生成html格式报告。
(pyTest2) E:\01workspace\venv\pyTest2\code>py.test --html=../Report/b.html
在code平行层级创建Report目录。执行以下命令以生成xml格式报告。
(pyTest2) E:\01workspace\venv\pyTest2\code>py.test --junitxml=../Report/b.xml
参考网址:
pytest官方网站 - https://docs.pytest.org/en/latest/index.html
pytest详解 - https://www.jianshu.com/p/a754e3d47671
生成报告 - https://blog.csdn.net/liuchunming033/article/details/48137813?utm_source=blogxgwz0 -liuchunming033
pytest 多种用法 - https://www.cnblogs.com/jinzhuduoduo/articles/7017405.html
pytest学习笔记(非完整版) - https://www.jianshu.com/p/b825addb4e16