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 ...
随机推荐
- PTE 准备之 Read aloud
Read aloud A text appears on screen.Read the text aloud rext up tp 60 words varies by task, dependin ...
- linux搭建gtk的开发环境
1:在终端中运行以下命令: sudo apt-get install libgtk2.0-dev 2:用以下指令查看是否安装成功: pkg-config --cflags --libs gtk+-2. ...
- OO第一单元感悟与体会
第一单元的三次编程作业结束了,现在分享一些我对自己作业的分析和感想 1.程序结构的分析 第一次作业: 本次作业我的主要思路是,为每一项写一个正则表达式,在输入的字符串中匹配每一项,多项式类中保存着一个 ...
- 基于scrapy框架的爬虫基本步骤
本文以爬取网站 代码的边城 为例 1.安装scrapy框架 详细教程可以查看本站文章 点击跳转 2.新建scrapy项目 生成一个爬虫文件.在指定的目录打开cmd.exe文件,输入代码 scrapy ...
- 设计Web页面(2)
1.前面我们新建了一个空白的ASP.NET网页,那么接下来这章我们就讲一下设计Web页面 2.布局页面有两种方法,一种是通过Table表格来布局页面窗体,另一种是通过CSS+DIV来布局窗体,其中作为 ...
- JS基础学习第二天
类型转换 类型转换就是指将其他的数据类型,转换为String Number 或 Boolean 转换为String 方式一(强制类型转换): 调用被转换数据的toString()方法例子:var a ...
- 201871030122-牛建疆 实验三 结对项目——《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客链接 班级博客链接 作业要求链接 作业要求链接 我的课程学习目标 (1)体验软件项目开发中的两人合作,练习结对编程(Pair programming).(2)掌握Github协 ...
- Spring(七)SpringMVC的文件上传
1-SpringMVC的请求-文件上传-客户端表单实现(应用) 表单项type="file" 表单的提交方式是post 表单的enctype属性是多部分表单形式,及enctype= ...
- kubernetes-copyFromPod
import com.google.common.io.ByteStreams; import io.kubernetes.client.Copy; import io.kubernetes.clie ...
- (十六)VMware Harbor 复制镜像
Step 1: 点击复制镜像后 Step 2: 填写复制镜像信息 Step 3:在sx628下,会多出一个镜像