当前位置:网站首页>自动化测试框架Pytest(一)——入门
自动化测试框架Pytest(一)——入门
2022-08-10 06:49:00 【测试小娜】
今天来学习一款Python的自动化框架——pytest
一、单元测试框架
java:junit和testing
python:unittest和pytest
单元测试框架主要做什么:
1、测试发现:从多个文件里找测试用例
2、测试执行:按照一定的顺序和规则去执行,并生成结果
3、测试判断:通过断言判断预期结果和实际结果的差异
4、测试报告:统计测试进度、耗时、通过率,生成测试报告
pytest简介:
1、pytest是一个非常成熟的Python单元框架,比unittest更灵活,容易上手
2、pytest可以和selenium、requests、appium实现web自动化、接口自动化、app自动化
3、pytest可以实现测试用例的跳过一级reruns失败用例重试
4、pytest可以和allure生成非常美观的测试报告
5、pytest可以和jenkins持续集成
6、pytest有很多强大的插件
二、使用pytest
1、模块名必以test_开头或_test结尾
2、测试类名必须以Test开头,并且不能有init方法
3、测试方法必须以test开头
三、pytest测试用例的运行方式
1、主函数模式
(1)运行所有:
pytest.main()(2)运行模块:
pytest.main(['-vs','./testcase/test_01.py'])(3)指定文件夹:
pytest.main(['-vs','./testcase'])(4)nodeid方式启动:
pytest.main(['-vs','./testcase/test_01.py::TestLogin::test_01'])2、命令行模式
(1)运行所有:
pytest(2)运行模块:
pytest -vs ./testcase/test_01.py(3)指定文件夹:
pytest -vs ./testcase(4)nodeid方式启动:
pytest -vs ./testcase/test_01.py::TestLogin::test_01参数:
-s:输出调试信息,包括print打印的信息
-v:显示详细信息
-k:根据测试用例的部分字符串指定测试用例
pytest -k "02"-n:几个线程并行跑
pytest -vs -n 2pytest.main(['-vs','-n=2'])
-x:只要有一个用例报错,那么测试就停止
3、通过读取pytest.ini配置文件运行
[pytest]addopts = -vstestpaths = ./testcasepython_files = test_02.pypython_classes = Test*python_functions = test
1、位置一般放在项目的根目录。
2、编码必须是ANSI,可以使用notpad++修改编码格式。

3、作用是改变pytest默认的行为。
4、不管是主函数的模式运行还是命令行的模式运行
四、rerunfailures失败重试
1、pip升级
python -m pip install pip==20.2.42、安装 pytest-rerunfailures
python -m pip install pytest-rerunfailures3、main函数添加参数 --rerun=重试次数
pytest.main(['-vs','--reruns=2'])4、terminal执行指令:
pytest -vs ./testcase --reruns 2可以看到执行失败的用例会重新执行2次

五、pytest的执行顺序
通过@pytest.mark.run(order=?)标记来指定顺序,数字越小的越先执行
class TestLogin:@pytest.mark.run(order=1)def test_01(self):print('测试百里守约')@pytest.mark.run(order=3)def test_02(self):print('测试娜可露露')@pytest.mark.run(order=2)def test_03(self):print('测试蔡文姬')

六、分组执行
通过@pytest.mark.XXX来进行分组
@pytest.mark.smokedef test_01(self):print('测试蔡文姬')@pytest.mark.usermanagedef test_02(self):print('测试东皇')
pytest.ini
[pytest]addopts = -vs -m "smoke or usermanage"testpaths = ./testcasepython_files = test_02.pypython_classes = Test*python_functions = testmarkers =smoke:冒烟用例usermanage:用户管理模块
也可以terminal执行:
pytest -vs -m "smoke or usermanage"七、pytest跳过测试用例
1、无条件跳过,可以后面不加reason
@pytest.mark.skip(reason="无敌")def test_04(self):print('测试东皇')
2、有条件跳过
age = 15@pytest.mark.skipif(age<18,reason="未成年")def test_05(self):print('测试跳过')
3、terminal执行pytest

八、生成测试报告
addopts = -vs --html ./report/report.html
下一章介绍pytest的初始化和相关工具
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。
边栏推荐
猜你喜欢

3-6月面经总结,200多页真题笔记和详解(含核心考点及6家大厂)

MySQL's InnoDB engine (6)

MySQL之InnoDB引擎(六)

强化学习_03_表格方法实践(CartPole-v0 And MontoCarlo)

ES13 - ES2022 - The 123rd ECMA Congress approves the ECMAScript 2022 language specification

C语言文件操作

Reproduce dns out-band data combined with sqlmap

About MongoDb query Decimal128 to BigDecimal problem

【愚公系列】2022年08月 Go教学课程 034-接口和多态

DGIOT支持工业设备租赁以及远程管控
随机推荐
什么是MQTT网关?与传统DTU有哪些区别?
.NET-8.我的思想笔记
浅谈C语言整型数据的存储
【强化学习】《Easy RL》- Q-learning - CliffWalking(悬崖行走)代码解读
深入理解LTE网络的CDRX
2022河南萌新联赛第(五)场:信息工程大学 C - 丢手绢
个人博客系统
结构体初阶
About MongoDb query Decimal128 to BigDecimal problem
Unity3d famous project-Dark Tree translation
761. Special Binary Sequences
ES13 - ES2022 - 第 123 届 ECMA 大会批准了 ECMAScript 2022 语言规范
2022河南萌新联赛第(五)场:信息工程大学 H - 小明喝奶茶
SCS【2】单细胞转录组 之 cellranger
数据库学习之表的约束
oracle业务表的数据发生增删改,该表的索引会写redo,undo吗?
概率分布及其应用
Discussion on Chinese Fuzzy Retrieval in Databases
Grammar Basics (Judgment Statements)
数据库学习之数据类型