今天分享内容的重点,和大家来讲一下我们的测试框架——Pytest
讲到这个框架的话呢,可能有伙伴就会问老师,我在学习自动化测试过程中,我们要去学一些什么东西?
第一个肯定要学会的是一门编程语言,比如说Python或者Java,至少你要会一个
第二个,你去进行WebUI自动化或者接口自动化,一些成熟的框架,比如说用来做Web自动化有Selenium,App自动化有Appium、uiautomator2,接口自动化框架就非常的多,requests、httprunner,这个只是说是框架,不是指工具,如果说你要指工具的话,还有很多,比如进行Web自动化的工具,QTP、Airtest、RF这一些都是工具,RF你其实也可以理解它为一个开源的框架。
编程语言:
- python/java
成熟的框架:
- web自动化: selenium RF
- app自动化:appium uiautomator2 RF
- 接口自动化:requests httprunner
除了这一些之外,我们要去搭建一套框架,我相信大家肯定还听过这两个东西,哎~老师,不是还有一个叫做Unittest以及我们这个Pytest,我们讲到Unittest以及Pytest到底和我们前面的框架有什么区别呢?
这就和大家来讲一讲。
一听到框架这个东西,两类都叫做框架,区别在哪?
Unittest以及Pytest我们把它们叫做单元测试框架,这一类框架运用场景有两个,场景一用来做单元测试(对代码最小的集合进行测试比如说小到测试函数的功能是否实现,类的功能是否实现),做单元测试其实要针对不同的语言有不同的框架,比如说在单元测试比较成熟这种框架Xunit系列框架,比如说去写的网站是用Java来设计的,我要去测试就要用到Junit这个框架,或者你也可以用testng框架,是针对Java比较成熟的两个框架。比如说去写的网站是用Python来设计的我们用的就是Unittest以及Pytest。
单元测试框架:
场景一:用来做单元测试 对代码最小的集合进行测试(函数、类)
-
xunit系列框架
-
java ==》junit / testng
-
python ==》unittest / pytest
上面是它的第一个场景,我们在讲自动化的时候,我们很少会去用场景一,单元测试这个事情本来它是由测试工程师来做的,但是它对测试工程师要求比较苛刻,需要精通熟练一门编程语言,才能够把单元测试做得很好。基本上单元测试不会有专门的测试工程师去做,公司中大部分都是由开发进行一个交叉的测试。
场景二:自动化的用例的管理
unittest / pytest + selenium / appium/requests
场景二用就可以结合我们的成熟的框架来做自动化测试,用例的管理,昨天的时候就有跟大家讲到POM的一个分层,为什么要用到分层思想来进行设计呢,其实目的就是因为我们在进行自动化测试的过程中间,也是对于我们自动化用例去进行一个覆盖以及实现,在过程中间会有很多重复性的东西,我们就给它抽出来。
我们讲POM的时候,我们其实就是结合了unittest来设计的用例,并且运行。
只是说咱们没有去生成Html报告,其实真正的你要去进行完整的过程,除了以这种模式来设计用例之外,还要去执行用例还要有报告的生成。(昨天有讲Unittest设计用例的基本规则,需要视频教程的可以公众号主页点击领取资料)
软件测试全栈工程师 程序员一凡.png
今天就给大家来讲一下,Pytest框架是如何来管理用例,和Unittest又有什么区别?它有什么样的优势?
Pytest框架概述
- pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,功能更强大。
- pytest可以和selenium、appium、requests等结合实现web自动化、接口自动化、app自动化
- pytest可以实现测试用例的跳过以及reruns失败用例重试
- pytest可以和allure生成非常美观的测试报告
- pytest可以和jenkins持续集成
- pytest有很多非常强大的插件,并且这些插件能够实现很多实用的操作
Pytest插件
Pytest具有很多第三方插件,并且可以自定义扩展,常用的有:
- pytest
- pytest-xdist:测试用例分布式执行,多cpu分发
- pytest-ordering:用于改变测试用例的执行顺序
- pytest-rerunfailures:用例失败后重跑
- pytest-html:生成html格式的自动化测试报告
- allure-pytest:生成美观的allure测试报告
pytest识别用例默认规则
1.模块名(文件名)必须以test_开头或者以_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头
pytest配置文件
pytest.ini这个文件他是pytest单元测试框架的核心配置文件
1.位置: pytest.ini一般放在项目的根目录下
2.编码:必须是ANSI,可以使用Notepad++修改编码格式。有中文的时候一定要注意转码,否则会报错
3. 作用:改变pytest默认的执行方式
4.运行规则:主函数和命令行的执行方式,都会默认读取pytest.ini的配置文件
pytest配置文件
参数详解
-s:输出调试信息,包括print打印信息
-v:显示更详细的信息
-vs:两个参数一起用,输出详细的调试信息
-n:支持多线程或者分布式运行测试用例
- pytest test_login.py -vs -n 2
--reruns NUM:失败用例重跑次数
--maxfail=2:出现2个用例失败就停止
--html=./report/res.html:指定在目录生成一个测试报告
pytest test_login.py --html=./report/res.html
Allure环境部署
下载、安装、配置Allure
安装:解压即可
配置:环境变量--path--allure安装目录/bin
验证:
- dos命令行: allure --version
- pycharm terminal:allure --version
- 问题:dos验证Ok,pycharm验证失败怎么解决?重启pycharm
Allure报告指令
1.添加配置,生成json格式的临时报告
- 主函数: pytest.main(['--alluredir ,'./temp'])
- 配置文件:
addopts = --alluredir./temp
2.将json格式的临时报告转换为allure报告
pytest.main(['--alluredir' ;'./temp'])
os.system('allure generate ./temp -o ./report --clean')
冒烟测试
pytest.ini中添加markers = smoke:冒烟测试
在函数上加上mark标记来指定进行冒烟测试的用例:@pytest.mark.smoke
命令行执行:pytest -m smoke
主函数执行: pytest.ini添加-m smoke,再执行主函数即可
1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一个视频会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。
微信公众号:程序员一凡。这样的好内容,里面还有近百篇。 谢谢你的支持!
你看到优质的文章点赞,表面上是为了让作者开心,实际上可以让大数据和人工智能给你推荐更多优质的干货内容~
网友评论