前言
大家都晓得 Python 有自带的单元测试框架 unittest,那为什么还要学习 Pytest 呢?先理解下 Pytest 长处
pytest:
pytest 是一个十分成熟的全功能的 Python 测试框架,是 unittest 框架的扩大,次要特点有以下几点:
1、简略灵便,十分不便的组织自动化测试用例;
2、反对参数化,能够细粒度地管制要测试的测试用例;
3、可能反对简略的单元测试和简单的功能测试,比方 web 端 selenium/ 挪动端 appnium 等自动化测试、request 接口自动化测试
4、pytest 具备很多第三方插件,并且能够自定义扩大,比方测试报告生成,失败重运行机制
5、测试用例的 skip 和 fail 解决;
6、联合业界最美的测试报告 allure+Jenkins,继续集成
selenium:
基于 JavaScript 代码库的自动化测试框架,通过脚本语言,模仿用户行为操作,最靠近用户实在场景,实现对 web 自动测试。
Selenium,是目前的最火爆企业最支流的 webUI 自动化框架
环境搭建
pip install -U pytest
pytest-xdist #多线程
pip install -U pytest-rerunfailures #重试运行 cases
pip install pytest-html #生成测试报告
pytest –version # 会展现以后已装置版本
编写规定
编写 pytest 测试样例非常简单,只须要依照上面的规定:
测试文件以 test_结尾(以_test 结尾也能够)
测试类以 Test 结尾,并且不能带有 init 办法
测试函数以 test_结尾
断言应用根本的 assert 即可
selenium+pytest 案例实操
import pytest # 引入 pytest 包
def test_a(): # test 结尾的测试函数
print(“——->test_a”)
assert 1 # 断言胜利
def test_b():
print(“——->test_b”)
assert 0 # 断言失败
if name == ‘__main__’:
pytest.main([‘-s’, ‘class01.py’])
能够蕴含一个或多个 Test 结尾的测试类,test_结尾的函数
1. 测试类主函数模式
pytest.main([‘-s’, ‘test.py’])
2. 命令行模式运行
pytest 文件门路/测试文件名
3. 扩大插件
3.1. 测试报告:pytest-html
pytest.main([‘-s’,’test.py’,’–html=./report/result.html’])
示意以后门路下生成 report 文件夹,result.html 文件
批量运行用例:pytest-xdist
pytest.main([‘-s’,’test.py’,’–html=./report/result.html’,’-n=2′])
-n=2 示意 2 个线程并发运行所有的测试用例
allure 测试报告:allure-pytest
运行用例:pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])
pytest 测试指标文件 –alluredir 数据目录
运行后的后果,是生成 xml 的数据汇合
生成报告:allure generate –clean ./report/xml/ -o ./results/html/
第一个是数据集目录,第二个是生成报告目录
- o 是指向指标生成测试报告的目录;
4.conftest 配置
当自动化用例越来越宏大的时候,很多用例的数据能够共享,复用,让用例脚本可读性,维护性更高,比方登录等
conftest.py 配置里能够实现数据共享,比方 py 跨文件共享前置
conftest.py 配置脚本名称是固定的,不能改名称
不须要 import 导入 conftest.py,pytest 用例会主动查找
自从应用了 pytest 框架,爱了爱了,深深的感触到它的可扩展性和灵活性,老板再也不必放心我的自动化效率低
以上就是本次分享的全部内容,当初想要学习编程的小伙伴欢送关注 Python 技术大本营,获取更多技能与教程。