Pytest自动化测试-简易入门教程(03)
今天分享内容的重点,和大家来讲一下我们的测试框架——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设计用例的基本规则,需要视频教程的可以公众号主页点击领取资料)

今天就给大家来讲一下,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的配置文件

参数详解
-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、本文章学习资源,均可以免费分享。
微信公众号:程序员一凡。这样的好内容,里面还有近百篇。 谢谢你的支持!
你看到优质的文章点赞,表面上是为了让作者开心,实际上可以让大数据和人工智能给你推荐更多优质的干货内容~
Pytest自动化测试-简易入门教程(03)的更多相关文章
- Pytest自动化测试-简易入门教程(02)
Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...
- Pytest自动化测试-简易入门教程(01)
我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢? 难道我学自 ...
- Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制
LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...
- Pytest自动化测试 - 简易教程
简介 pytest是动态编程语言Python专用的测试框架,它具有易于上手.功能强大.可扩展性好.兼容性强.效率高.第三方插件丰富等特点. 功能特征: 完整的文档,包括安装,教程和PDF文档 简单而又 ...
- 大爽Python入门教程 0-3 安装Atom与配置Python环境
大爽Python入门公开课教案 点击查看教程总目录 安装轻量级IDE--Atom 一 下载 下面步骤1,2中网络卡顿的朋友, 请直接查看步骤3来操作 1. 搜索官网 使用搜索引擎搜索Atom, 打开搜 ...
- Lua简易入门教程
环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...
- Webpack简易入门教程
<!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...
- Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)
是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...
- 给萌新的Flexbox简易入门教程
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.sitepoint.com/flexbox-css-flexible-bo ...
随机推荐
- Hi3559AV100 NNIE开发(5)mobilefacenet.wk仿真成功量化及与CNN_convert_bin_and_print_featuremap.py输出中间层数据对比过程
前面随笔给出了NNIE开发的基本知识,下面几篇随笔将着重于Mobilefacenet NNIE开发,实现mobilefacenet.wk的chip版本,并在Hi3559AV100上实现mobilefa ...
- 【.NET 与树莓派】小风扇模块
小风扇,其实就是一个电机(马达),然后轴子上套一个扇叶.扇叶有两叶的,也有三叶的.这种我们小时候没少玩,太阳能帽子上就有一个小风扇,骑着自行车上学,路上只要有太阳光照射到,小风扇就会转.当然还有装干电 ...
- java集合【12】——— ArrayList,LinkedList,Vector的相同点与区别是什么?
目录 特性列举 底层存储结构不同 线程安全性不同 默认的大小不同 扩容机制 迭代器 增删改查的效率 总结一下 要想回答这个问题,可以先把各种都讲特性,然后再从底层存储结构,线程安全,默认大小,扩容机制 ...
- [SpringCloud教程]3. Eureka服务注册中心集成
新微服务项目多半采用Nacos作为服务注册与发现中心,但是旧项目可能使用Eureka.zookeeper.Consul.Nacos作为服务注册中心. 新项目建议使用Nacos作为服务注册中心 Spri ...
- vuejs集成echarts的一些问题
最近在做Beetlex的数据分析平台,在开发这个产品过程中涉及到大量的数据图表展示功能:由于产品前端使用的是vuejs开发,所以在集成echarts或多或少会碰到一些问题,在这里主要讲解一下碰到的问题 ...
- 火爆外网的 DGS 框架使用
Netflix 已开放其 Domain Graph Service(DGS)框架的源代码 ,该框架是为了方便整合 GraphQL 使用,用于简化 GraphQL 的实现. GraphQL 主要是作用于 ...
- Go-06-数据类型、常量、运算符
数据类型转换 Go语言采用数据类型前置加括号的方式进行类型转换,格式如:T(表达式).T表示要转换的类型:表达式包括变量.数值.函数返回值等. var a int =100 b := float(a) ...
- day11.迭代器与生成器
一.迭代器 1.迭代器即用来迭代取值的工具,而迭代是重复反馈过程的活动,其目的通常是为了逼近所需的目标或结果,每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次 ...
- 请求转发(forward)和请求包含(include)的区别?
请求包含的例子 第一个Servlet (DispatcherServlet) @Override protected void doGet(HttpServletRequest req, HttpSe ...
- k8s daemonset
DaemonSet控制器会在每个节点上运行单一的副本,他非常适合部署那些节点本身提供服务或者执行维护的 Pod 例如 : 存储相关,每个节点上运行glusterd, ceph 日志收集相关,每个节点上 ...