我们今天主讲的内容,就是测试框架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. CF533F Encoding 题解

    题目链接CF533F Encoding 提示1:   \(\mathcal O(26^2*n)\) 的算法可通过.常用的几种字符串匹配算法kmp,AC自动机,哈希都可以解决该问题 (后两者可以优化到 ...

  2. HDU_3071 Gcd & Lcm game 【素数分解 + 线段树 + 状压】

    一.题目  Gcd & Lcm game 二.分析 非常好的一题. 首先考虑比较暴力的做法,肯定要按区间进行处理,对于$lcm$和$gcd$可以用标准的公式进行求,但是求$lcm$的时候是肯定 ...

  3. Vue 全家桶学习资源(转)

    companion: React 全家桶学习资源(持续更新) 下面整理了一些关于Vue以及Vue衍生的学习资源: 官网文档 官网API ECMAScript 6 入门 30分钟掌握ES6/ES2015 ...

  4. Maven安装本地依赖包

    前提已安装maven并且配置了环境变量1.进入jar包所在的目录,打开cmd2.了解包的groupId.artifactId.version2.输入命令(依赖sdk为例)---maven命令mvn i ...

  5. JS逆向-抠代码的第四天【手把手学会抠代码】

    今天是md5巩固项目,该项目比昨天的复杂一些,但方法思路是一样的. 今天的目标:https://www.webportal.top/ 打开网站,填入账号密码(密码项目以123456做测试).点击登录抓 ...

  6. 阿里二面:什么是mmap?

    平时在面试中你肯定会经常碰见的问题就是:RocketMQ为什么快?Kafka为什么快?什么是mmap? 这一类的问题都逃不过的一个点就是零拷贝,虽然还有一些其他的原因,但是今天我们的话题主要就是零拷贝 ...

  7. Jmeter socket接口测试

    一.Socket简介 什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把 TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程 ...

  8. Rust 内置 trait :PartialEq 和 Eq

    GitHub: https://github.com/storagezhang Emai: debugzhang@163.com 华为云社区: https://bbs.huaweicloud.com/ ...

  9. 从谷歌CRE谈起,运维如何培养服务意识?

    从谷歌CRE谈起,运维如何培养服务意识? 2016年10月,谷歌云平台博客(Google Cloud Platform Blog)上更新了一篇文章,谷歌宣布了一个新的专业岗位,CRE(Customer ...

  10. 【Prolog - 2.0 基础应用】

    [术语统一 terms unify] 两者统一,只需满足下面两条件之一 1.原本就是相同的 2.包含变量,这些变量可以用术语统一实例化,从而得到相等的术语 mia和mia是统一的,42和42是统一的, ...