1.概述

selenium:
基于 JavaScript 代码库的自动化测试框架,通过脚本语言,模拟用户行为操作,最接近用户真实场景,实现对 web 自动测试。
Selenium,是目前的最火爆企业最主流的 webUI 自动化框架

pytest:
pytest 是一个非常成熟的全功能的 Python 测试框架,是 unittest 框架的扩展,主要特点有以下几点:
 1、简单灵活,非常方便的组织自动化测试用例;
 2、支持参数化,可以细粒度地控制要测试的测试用例;
 3、能够支持简单的单元测试和复杂的功能测试,比如 web 端 selenium/移动端 appnium 等自动化测试、request 接口自动化测试
 4、pytest 具有很多第三方插件,并且可以自定义扩展,比如测试报告生成,失败重运行机制
 5、测试用例的 skip 和 fail 处理;
 6、结合业界最美的测试报告 allure+Jenkins,持续集成

2.环境搭建

pip install -U pytest

pytest-xdist # 多线程

pip install -U pytest-rerunfailures # 重试运行 cases

pip install pytest-html # 生成测试报告

pytest --version # 会展示当前已安装版本

3.编写规则
编写 pytest 测试样例非常简单,只需要按照下面的规则:
 测试文件以 test_开头(以test 结尾也可以)
 测试类以 Test 开头,并且不能带有 init 方法
 测试函数以 test
开头
 断言使用基本的 assert 即可

4.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 文件路径/测试文件名

5. 扩展插件
5.1. 测试报告: pytest-html

pytest.main(['-s','test.py','--html=./report/result.html'])
:表示当前路径下生成 report 文件夹,result.html 文件

5.2 批量运行用例:pytest-xdist
pytest.main(['-s','test.py','--html=./report/result.html','-n=2'])
-n=2 表示 2 个线程并发运行所有的测试用例

5.3 allure 测试报告:allure-pytest
运行用例:pytest.main(['-s', '-q', '--alluredir', './report/xml'])
pytest 测试目标文件 --alluredir 数据目录
运行后的结果,是生成 xml 的数据集合
生成报告:allure generate --clean ./report/xml/ -o ./results/html/
第一个是数据集目录,第二个是生成报告目录
-o 是指向目标生成测试报告的目录;

6.conftest 配置
当自动化用例越来越庞大的时候,很多用例的数据可以共享,复用,让用例脚本可读性,维护性更高,比如登录等
conftest.py 配置里可以实现数据共享,比如 py 跨文件共享前置
conftest.py 配置脚本名称是固定的,不能改名称
不需要 import 导入 conftest.py,pytest 用例会自动查找

自从使用了 pytest 框架,爱了爱了,深深的感受到它的可扩展性和灵活性,老板再也不用担心我的自动化效率低

原创不易,燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!

整理了一份 216 页软件测试大厂面试题,以及 2020 推荐最新的简历模板,送给小伙伴们,关注公众号程序员一凡回复【简历】自行领取,和一些小伙伴建立一个技术交流群,一起探讨技术,分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!


↙↙↙阅读原文可查看相关链接,并与作者交流