Pytest自动化测试-简易入门教程(01)
我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢?
难道我学自动化我不就是学一个Python+Selenium或者+Appium就可以了吗?
那这个框架它的作用是什么?
在这个过程中间呢,先跟大家来讲一下自动化测试,
所谓的自动化测试,你可以理解为它其实跟功能测试流程是一样的,比如说我们做功能测试的话呢,你需要去干什么?
你需要去分析需求。
功能测试:分析需求==》用例的设计==》手工执行测试用例==》Bug的提交==》测试报告
我们做功能测试首先要去分析需求,然后要去进行用例的设计,再有的话手工去执行用例,然后呢也要去进行Bug的一个提交,如果碰到Bug我们就要去提交Bug,提交完Bug之后,一个版本或者一个阶段测试完之后我们就要去出具测试报告。基本上对于我们功能测试来说就是这样子的一个环节流程。
自动化测试(分析需求==》设计自动化用例控==》代码(工具)执行用例)==》测试报告
其实自动化测试它也是这样子的一个环节流程,首先同样我们也会去分析需求,但是这个分析需求的话呢,它是指你对整个项目业务的需求,以及流程的需求。我要确定在这个项目中间哪一些业务、流程可以用自动化来实现,哪些是不能实现,能实现的用自动化来做,不能实现的就用手工来做。所以第一个阶段我们都是做需求的分析,然后在这一块你确定需求后需要设计自动化测试用例,在这个里面,我们说什么是自动化呢?
也就是说我们用代码或者用工具的形式代替人工来执行这个用例的过程,那么它就是自动化测试。
因为在功能测试工作中间,原本我们是通过手工的方式去点点点,点击输入以及一些其他的操作,只是在自动化环节是用代码或者工具方法进行替代。
代码工具怎么去进行执行,怎么样来进行判断,怎么进行测试报告的提交,那么这一些东西我们统统把它写在代码中间,因为在这个过程中间,既然你写了这么多测试用例,代码去实现的时候我们也会要去覆盖到自动化测试用例,从而进行实现。后面也是出具测试报告,只是这个测试报告不需要你人工去进行统计。
比如我人工去进行统计,一共多少个Bug,A类是多少,B类是多少,C类是多少,测试结果是通过还是不通过,这个是我们做功能测试时候会以这个方式去进行统计,进行衡量。
但是做自动化测试的时候呢,我们也可以通过代码的形式,让它生成指定的测试报告,中间会给你自动去统计有多少条用例是成功的有多少条测试用例是失败(出错的)
所以在这一块功能和自动化流程,最大的不同在是在代码(工具)执行用例这一个环节
那如果我们要用代码或者工具的方式,去覆盖或者说完成所有的自动化测试用例,我们怎么样去做?
难道都是用线性流程的方式来做吗?
线性流程:打开浏览器--进入登录界面--输入用户名--输入密码--点击登录
登录
1:正确的用户名Admin,正确的密码-123456 ==》结果==》写到测试报告中去
2:错误的用户名User,错误的密码-1234567890
3……
无论是你的第一条还是第二条用例,它做的都是前面的这样子一个线性流程,它们之间最大的差别是什么?-
最大的差别就是数据不同:
- 比如说正确的用户名Admin - 123456
- 错误的我就来一个User,密码匹配123456
- 再或者正确的用户名Admin,匹配一个错误的密码1234567890
所以在这里我们就要考虑,如何最大化的去重复使用脚本,只要通过不同的数据进行实现就OK,并且每一条用例它执行完成之后,会自动化的给你去生成对应的结果,写到我们的测试报告中间去。因为我们最终是通过测试报告中间的结果来判断你这个自动化测试是通过还是不通过。
因此在这样的情况下,如何来解决这一种用例覆盖的一个问题,因此这不得不跟大家讲一下,我们要解决用例的覆盖,就是用我们的
单元测试框架
比如说我们常见的
- Java——junit
- Python——unittest / Pytest
这些框架就是来规范自动化测试用例的覆盖,以及最大的程度去复用脚本。
在这个过程中间,单元测试框架作用不仅仅可以用于我们自动化测试过程中间,它还可以用作单元阶段的白盒测试,这是说这部分的工作我们测试工程师接触得不多,因为在企业中间,大部分白盒测试都会由开发来做。只是说如果你掌握这个东西的话,我们除了可以把它用在自动化层面,也可以用在单元白盒测试阶段。
那今天要和大家讲到的就是Pytest。
unittest / Pytest有什么区别?
我们简单的来阐述一下,
第一个他们两者的共同点就是说都是主流的单元测试框架
有些小伙伴比如他只会其中一种,比如说你会Pytest但不会用Unittest。
其实这也是一个面试题:你为什么用这一个不用另外一个,unittest / Pytest有什么区别?
在我们的学习过程中,既然这两个都是主流,基本上两个框架我们都必须要知道。
Unittest是Python自带的一个单元测试框架,而Pytest是一个第三方框架,这个是两者之间第一个区别。
自带框架和第三方的框架区别?
自带的不需要安装,可以直接使用,第三方你首先就得去安装。
第二个区别,Unittest的功能其实是没有Pytest那么强大的,因为Pytest它有很多的一些插件,并且全局性非常好。
第三个区别,Pytest的实现会比Unittest更为简洁,更轻便。
所以在企业中间我们去进行自动化框架搭建的时候,其实会选择Pytest会多于Unittest。
但是Unittest对于初学者入门,也是非常好的一个框架。

1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一个视频会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。
文章首发于微信公众号:程序员一凡,这样的好内容,里面还有近百篇。 谢谢你的支持!一个用心码了这么多文字的人,往往渴望得到大家的认可。如果你觉得这篇文章对你有帮助,双击屏幕,给我点个赞呀!
Pytest自动化测试-简易入门教程(01)的更多相关文章
- Pytest自动化测试-简易入门教程(02)
Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...
- Pytest自动化测试-简易入门教程(03)
今天分享内容的重点,和大家来讲一下我们的测试框架--Pytest 讲到这个框架的话呢,可能有伙伴就会问老师,我在学习自动化测试过程中,我们要去学一些什么东西? 第一个肯定要学会的是一门编程语言,比如说 ...
- 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线
[Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院 欧浩源 一.引言 在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...
- Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制
LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...
- Pytest自动化测试 - 简易教程
简介 pytest是动态编程语言Python专用的测试框架,它具有易于上手.功能强大.可扩展性好.兼容性强.效率高.第三方插件丰富等特点. 功能特征: 完整的文档,包括安装,教程和PDF文档 简单而又 ...
- Lua简易入门教程
环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...
- 【转】BCSphere入门教程01:Immediate Alert--不错
原文网址:http://www.ituring.com.cn/article/117570 写在前面 智能硬件开发的起点是智能硬件,在本教程中的每一章节,首先会列出您的蓝牙智能硬件所需要支持的Serv ...
- 【CC2530入门教程-01】IAR集成开发环境的建立与项目开发流程
[引言] 本系列教程就有关CC2530单片机应用入门基础的实训案例进行分析,主要包括以下6部分的内容:1.CC2530单片机开发入门.2.通用I/O端口的输入和输出.3.外部中断初步应用.4.定时/计 ...
- Webpack简易入门教程
<!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...
随机推荐
- python基础学习之函数基础和部分内置函数
在函数调用的时候,必备参数必须要传入 函数定义: def 函数名: 代码块pass return 返回值 函数名命名规则: 字母.数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有 ...
- ASP.NET Core 在 .NET 6 Preview 2 中的更新
原文:<ASP.NET Core updates in .NET 6 Preview 2>,作者 Daniel Roth .NET 6 预览版 2 现已推出,其中包括许多对 ASP.NET ...
- java IO流文件拷贝文件(字节流标准写法)
public static void copyFile(String srcPath, String destPath) { FileInputStream fis = null; FileOutpu ...
- 一个名叫Sentinel-Rules-SDK的组件,使得Sentinel的流控&熔断规则的配置更加方便
原文链接:一个名叫Sentinel-Rules-SDK的组件,使得Sentinel的流控&熔断规则的配置更加方便 1 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越 ...
- C语言数组寻址
C语言数组 数组的定义 数组是用来存放数据类型相同且逻辑意义相同的数据 数组的大小 数组的大小不能是变量,必须是常量或者常量表达式,常量表达式由编译器编译时自动求值. 也可以不指定数组大小,但必须对数 ...
- juc下Condition类解析
在使用Lock之前,我们使用的最多的同步方式应该是synchronized关键字来实现同步方式了.配合Object的wait().notify()系列方法可以实现等待/通知模式. Condition接 ...
- TypeError: Can't convert 'int' object to str implicitly Python常见错误
尝试连接非字符串值与字符串 想要字符串连接非字符串需要先进行强制转化 可以用str()函数 --------------------------------
- 冒泡算法(BubbleSort)
/*冒泡排序原理 比较相邻的元素.如果前一个元素比后一个元素大,就交换这两个元素的位置. 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素.最终最后位置的元素就是最大值.实现步骤 1 ...
- 北航OO第一单元作业总结(1.1~1.3)
经过了三次作业之后,OO第一单元告一段落,作为一个蒟蒻,我初步了解了面向对象的编程思想,并将所学内容用于实践. 一.第一次作业 1.架构分析 本次作业需要完成的任务为简单多项式导函数的求解.表达式仅支 ...
- pwnable.tw 3x17
3x17 文章主要是参考了https://xuanxuanblingbling.github.io/ctf/pwn/2019/09/06/317/ 首先我们检查一下开启的保护 运行一下,先让输入add ...