我们今天主讲的内容,就是测试框架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. Spring Boot 自动装配原理

    Spring Boot 自动装配原理 Spring Boot 在启动之前还有一系列的准备工作,比如:推断 web 应用类型,设置初始化器,设置监听器,启动各种监听器,准备环境,创建 applicati ...

  2. P1008_三连击(JAVA语言)

    /*  * 题目描述 将1,2,⋯,9共9个数分成3组, 分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若 ...

  3. P1089_津津的储蓄计划(JAVA语言)

    package 顺序与分支; /* * 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱, 津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄, ...

  4. 习题3_08循环小数(JAVA语言)

    package 第三章习题; import java.util.Arrays; import java.util.Scanner; /*  * 输入整数a和b(0<=a<=3000,1&l ...

  5. 2、Spring教程之HelloSpring

    导入Jar包 注 : spring 需要导入commons-logging进行日志记录 . 我们利用maven , 他会自动下载对应的依赖项 . <dependency> <grou ...

  6. java例题_06 最大公约数&最小公倍数

    1 /*6 [程序 6 求最大公约数及最小公倍数] 2 题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数. 3 程序分析:利用辗除法. 4 */ 5 6 /*分析 7 * ======== ...

  7. 基于vite2的react脚手架

    vite-react-boilerplate 开发编译 yarn start 启动开发 yarn build 启动编译 代码质量和风格 husky/lint-staged/eslint/prettie ...

  8. Python数据分析入门(十七):绘制条形图

    条形图的绘制方式跟折线图非常的类似,只不过是换成了plt.bar方法.plt.bar方法有以下常用参数: x:一个数组或者列表,代表需要绘制的条形图的x轴的坐标点. height:一个数组或者列表,代 ...

  9. 剑指offer二刷(精刷)

    剑指 Offer 03. 数组中重复的数字 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次. ...

  10. 如何以源码形式运行Nacos Server

    官方标准运行方式 下载解压可运行包 curl -O https://github.com/alibaba/nacos/releases/download/1.3.2/nacos-server-1.3. ...