我们今天主讲的内容,就是测试框架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对于初学者入门,也是非常好的一个框架。

 
单元测试框架Pytest

1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一个视频会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。

文章首发于微信公众号:程序员一凡,这样的好内容,里面还有近百篇。 谢谢你的支持!一个用心码了这么多文字的人,往往渴望得到大家的认可。如果你觉得这篇文章对你有帮助,双击屏幕,给我点个赞呀!

Pytest自动化测试-简易入门教程(01)的更多相关文章

  1. Pytest自动化测试-简易入门教程(02)

    Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...

  2. Pytest自动化测试-简易入门教程(03)

    今天分享内容的重点,和大家来讲一下我们的测试框架--Pytest 讲到这个框架的话呢,可能有伙伴就会问老师,我在学习自动化测试过程中,我们要去学一些什么东西? 第一个肯定要学会的是一门编程语言,比如说 ...

  3. 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

    [Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...

  4. Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

        LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...

  5. Pytest自动化测试 - 简易教程

    简介 pytest是动态编程语言Python专用的测试框架,它具有易于上手.功能强大.可扩展性好.兼容性强.效率高.第三方插件丰富等特点. 功能特征: 完整的文档,包括安装,教程和PDF文档 简单而又 ...

  6. Lua简易入门教程

    环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...

  7. 【转】BCSphere入门教程01:Immediate Alert--不错

    原文网址:http://www.ituring.com.cn/article/117570 写在前面 智能硬件开发的起点是智能硬件,在本教程中的每一章节,首先会列出您的蓝牙智能硬件所需要支持的Serv ...

  8. 【CC2530入门教程-01】IAR集成开发环境的建立与项目开发流程

    [引言] 本系列教程就有关CC2530单片机应用入门基础的实训案例进行分析,主要包括以下6部分的内容:1.CC2530单片机开发入门.2.通用I/O端口的输入和输出.3.外部中断初步应用.4.定时/计 ...

  9. Webpack简易入门教程

    <!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...

随机推荐

  1. 「UOJ 514」通用测评号(生成函数)

    首先,题目中的过程可以看作:每次选择任意一个燃料仓,给它装填 \(1\) 单位的燃料,如果此时恰好 "填满" 了它,就给答案 \(+1\). 考虑 \(n\) 号燃料仓填满的概率, ...

  2. 用水浒传来学习OKR

    用水浒传来学习OKR 目录 用水浒传来学习OKR 0x00 摘要 0x01 OKR 1.1 基本概念 1.2 OKR管理的意义 1.3 Objective 1.3.1 什么是好的O 1.3.2 上下级 ...

  3. ECMAScript 2017(ES8)新特性简介

    目录 简介 Async函数 共享内存和原子操作 Object的新方法 String的新方法 逗号可以添加到函数的参数列表后面了 简介 ES8是ECMA协会在2017年6月发行的一个版本,因为是ECMA ...

  4. Just a Joke HDU - 4969(物理+积分)

    题目链接:https://vjudge.net/problem/HDU-4969#author=0 题意:一个人在圆心以V2速度追赶一个以V1的速度进行圆周运动,问在圆心的人能否在不超过D的距离追上他 ...

  5. python3 int() 各数据类型转int

    print(int('0b1010',0))#二进制数print(int('0xa',0))#十六进制数print(int('0xa',16))print(int('a',16))print(int( ...

  6. 我的xshell配色方案,绿色/护眼/留存/备份

    [mycolor] text(bold)=e9e9e9 magenta(bold)=ff00ff text=00ff80 white(bold)=fdf6e3 green=80ff00 red(bol ...

  7. Java中的equals()和hashCode() - 超详细篇

    前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的equals()和hashCode() - 详细篇>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论 ...

  8. 【Python学习笔记】-虚拟环境virtualenv

    在开发python应用程序的时候,系统安装的python3只有一个版本:3.4.所有的第三方的包都回被pip安装到python3的site-packages目录下. 如果我们要要同时开发多个应用程序, ...

  9. No_leak(ret2ROP + 低字节改写到syscall)

    No_leak 有这种题,题目很短小,只有一个read函数,没有输出函数,这样的题怎么解呢?当然首先想到的是ret2dl,但是那个有点儿复杂.下面我来介绍一种简单的解法. 代码如下: //gcc 1. ...

  10. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...