当前位置: 首页 > 编程日记 > 正文

软件测试培训教程:pytest与unittest区别

在软件测试培训教程中,会讲到关于pytest与unittest区别,那么本期教程小编就为大家详细的介绍一下pytest与unittest区别有哪些?

pytest与unittest区别:

一、用例编写规则

1.unittest提供了testcases、testsuites、testfixtures、testrunner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:

(1)测试文件必须先importunittest

(2)测试类必须继承unittest.TestCase

(3)测试方法必须以“test_”开头

(4)测试类必须要有unittest.main()方法

2.pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。使用pytest编写用例,必须遵守以下规则:

(1)测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)

(2)测试方法必须以“test_”开头。

(3)测试类命名以"Test"开头。

总结:pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑;还有xdist插件,可用于设备并行执行。

01

二、用例前置和后置

1.unittest提供了setUp/tearDown,每个用例运行前、结束后运行一次。setUpClass和tearDownClass,用例执行前、结束后,只运行一次。

2.pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/tearDown更灵活。

模块级(setup_module/teardown_module)开始于模块始末,全局的

函数级(setup_function/teardown_function)只对函数用例生效(不在类中)

类级(setup_class/teardown_class)只在类中前后运行一次(在类中)

方法级(setup_method/teardown_method)开始于方法始末(在类中)

类里面的(setup/teardown)运行在调用方法的前后

pytest还可以在函数前加@pytest.fixture()装饰器,在测试用例中装在fixture函数。fixture的使用范围可以是function,module,class,session。

firture相对于setup和teardown来说有以下几点优势:

命名方式灵活,不局限于setup和teardown这几个命名

conftest.py配置里可以实现数据共享,不需要import就能自动找到一些配置,可供多个py文件调用。

scope="module"可以实现多个.py跨文件共享前置

scope="session"以实现多个.py跨文件使用一个session来完成多个用例

用yield来唤醒teardown的执行

三、断言

1.unittest提供了assertEqual、assertIn、assertTrue、assertFalse。

2.pytest直接使用assert表达式。

四、报告

1.unittest使用HTMLTestRunnerNew库。

2.pytest有pytest-HTML、allure插件。

五、失败重跑

1、unittest无此功能。

2、pytest支持用例执行失败重跑,pytest-rerunfailures插件。

六、参数化

1、unittest需依赖ddt库。

2、pytest直接使用@pytest.mark.parametrize装饰器。

七、用例分类执行

1、unittest默认执行全部用例,也可以通过加载testsuit,执行部分用例。

2、pytest可以通过@pytest.mark来标记类和方法,pytest.main加入参数("-m")可以只运行标记的类和方法。

相关文章:

NA-NP-IE系列实验36:扩展ACL

实验36:扩展ACL1.实验目的 通过本实验可以掌握:(1)定义扩展ACL(2)应用扩展ACL(3)扩展ACL 调试2.拓扑结构 实验拓扑如图所示。3.实验步骤 注:本实验要求不允许1.1.1.1 所在…

题目 1470:【蓝桥杯】【入门题】【基础练习VIP】时间转换

题目 1470&#xff1a;时间转换 蓝桥杯刷题群已成立&#xff0c;微信后台回复【蓝桥杯】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 给定一个以秒为单位的时间t&#xff0c;要求用 “< H> :< M> …

Android如何防止apk程序被反编译

作为Android应用开发者&#xff0c;不得不面对一个尴尬的局面&#xff0c;就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。Google似乎也发现了这个问题&#xff0c;从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹 proguard是一…

java培训:什么是抽象类?怎么定义?

什么是抽象类?怎么定义?这是属于java技术里面的一个知识点&#xff0c;本期教程就是围绕这个问题做的相关介绍&#xff0c;当定义一个类时&#xff0c;常常需要定义一些成员方法描述类的行为特征&#xff0c;但有时这些方法的实现方式是无法确定的。例如&#xff0c;在定义An…

题目 1093:【蓝桥杯】【入门题】字符逆序

题目 1093&#xff1a;字符逆序 蓝桥杯刷题群已成立&#xff0c;微信后台回复【蓝桥杯】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 64MB 1. 题目描述 将一个字符串str的内容颠倒过来&#xff0c;并输出。str的长度不超过100个字…

一款腾讯UED设计的提示插件(使用教程)

这是一款腾讯UED设计的提示插件&#xff0c;看着肯定很眼熟吧&#xff0c;闲话不多说&#xff0c;直接上demo吧。 显示 ZENG.msgbox.show(提示信息,图标类型);隐藏&#xff1a; ZENG.msgbox._hide();几秒后自动隐藏&#xff1a; ZENG.msgbox.show(提示信息,图标类型,显示时长);…

互联网企业的移动布局

转载于:https://www.cnblogs.com/deve/archive/2012/06/13/2568988.html

女生学软件测试有哪些优势

对于软件测试这个岗位&#xff0c;相信大家都有听说过&#xff0c;最近几年&#xff0c;越来越多的女性加入到互联网技术行业&#xff0c;选择最多的岗位就是软件测试&#xff0c;那么到底女生学软件测试有哪些优势呢?来看看下面的详细介绍。 女生学软件测试有哪些优势?首先咱…

常见http状态码说明(转)

首先要先了解下什么是HTTP状态码&#xff1a;HTTP状态码&#xff08;HTTP Status Code&#xff09;是用以表示网页服务器HTTP响应状态的3位数字代码。每当客户端向Web服务器发送一个HTTP请求时&#xff0c;服务器都会返回一个响应代码。而这些响应代码主要分成五类&#xff1a;…

题目 1471:【蓝桥杯】【入门题】【基础练习VIP】矩形面积交

题目 1471&#xff1a;矩形面积交 蓝桥杯刷题群已成立&#xff0c;微信后台回复【蓝桥杯】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 平面上有两个矩形&#xff0c;它们的边平行于直角坐标系的X轴或Y轴。对于…

Windows Server 2012关闭Server Manager开机自启动

最近将办公系统改为了Windows Server 2012使用起来个人感觉比较方便&#xff0c;且对服务器管理也变得更加方便&#xff0c;但是用做办公我又不喜欢Server Manager每次开机都启动&#xff0c;当然如果是生产用的服务器还是应该开启的&#xff0c;这样可以在这里直观看到当前服务…

学javascript有哪些开发工具

学习web前端技术&#xff0c;辅助工具是在学习过程中必须要用到的&#xff0c;包括后面的工作中&#xff0c;辅助工具可以更快的提高我们的工作效率&#xff0c;下面小编就为大家整理了学javascript需要用到的开发工具。 学javascript有哪些开发工具&#xff1a; 1.HBuilder HB…

python冒泡排序与常用数学计算

一 、冒泡排序: 冒泡排序: 属于交换排序; 两两比较大小,交换位置,如同水泡大的往上(右)跑; n个数从左至右编号从0到n-1,索引0和1比较,如果索引0大,则交换两者位置; 如果索引1大则不用交换继续比较索引1和2的值,将大值放在右侧,直到n-2和n-1 比较完,第一轮比较完成,第二轮从索引…

题目 1477:【蓝桥杯】【入门题】字符串输入输出函数

题目 1477&#xff1a;字符串输入输出函数 蓝桥杯刷题群已成立&#xff0c;微信后台回复【蓝桥杯】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 编写函数GetReal和GetString&#xff0c;在main函数中分别调用这…

Android游戏开发基础part2--Canvas画布

游戏开发基础part2--Canvas画布 又过了一周才继续做总结&#xff0c;四级结束了&#xff0c;应该可以多点时间学习游戏编程了。 Canvas画布类是一个在游戏当中担当非常重要的角色&#xff0c;它可以绘制出不同的图形和图片&#xff0c;可以说没有了画布就不能做出画面炫丽的游戏…

JavaScript有哪三部分组成?

在学习web前端技术时&#xff0c;最常见的也是需要最着重学习的就是JavaScript这一方面&#xff0c;工作中也是会经常用到的&#xff0c;那么JavaScript有哪三部分组成呢?来看看下面的详细介绍。 JavaScript有哪三部分组成? JavaScript的组成 JavaScript由ECMScript、BOM和DO…

【蓝桥杯】【入门题】【算法提高VIP】1480:模拟计算器

题目 1480&#xff1a;模拟计算器 蓝桥杯刷题群已成立&#xff0c;微信后台回复【蓝桥杯】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 使用Switch语句编写一个模拟简单计算器的程序。依次输入两个整数和一个字…

《c和指针》笔记5

递归 C通过运行时堆栈支持递归函数。的哦贵函数就是直接或间接调用自身的函数。 递归函数所需要的2个特性&#xff1a; 1、存在限制条件&#xff0c;当符合这个条件时递归便不再继续。 2、每次调用之后越来越接近这个限制条件。 递归函数在实现方面更加接近问题的抽象定义&…

怎么获得combobox的valueField值

var a; var dwField new Ext.form.ComboBox({ fieldLabel:管理员, mode: local, width:70, id:user_name, …

哪些人适合学习java技术

java技术在互联网行业一直都是非常重要的存在&#xff0c;学习java技术只会多不会少&#xff0c;那么目前哪些人适合学习java技术呢?来看看下面的详细介绍就知道了。 哪些人适合学习java技术? 1.在家待业人员&#xff0c;没有明确的目标&#xff0c;不知道自己想要什么&#…

AS3版本的MaxRects算法测试

早上&#xff0c;在微博发现一条信息&#xff0c;关于MaxRects算法的&#xff0c;杜增强DzQ 移植的关于AS3版本的MaxRects算法&#xff0c;具体地址是&#xff1a;http://www.duzengqiang.com/blog/post/971.html 代码如下&#xff1a; /* Based on the Public Domain MaxRecta…

android 52 粘滞广播

粘滞广播&#xff1a;广播发送出去以后&#xff0c;广播接收者还没有创建&#xff0c;当广播接收者注册的时候就可以接收&#xff0c;如果不是粘滞广播则如果没有广播接收者就以后不能再接收了。 mainActivity: package com.sxt.day07_07;import android.app.Activity; import …

【蓝桥杯】【入门题】【算法提高VIP】1481:剪刀石头布

题目 1481&#xff1a;剪刀石头布 蓝桥杯刷题群已成立&#xff0c;微信后台回复【蓝桥杯】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 编写程序实现“剪刀&#xff0c;石头&#xff0c;布”游戏。在这个游戏中…

UI设计培训学习中必须掌握的设计原则

不管是刚开始学习UI设计或者已经在学习UI设计同学中&#xff0c;UI设计的设计原则都是非常重要的&#xff0c;需要大家去重点关注的&#xff0c;下面小编就为大家详细的介绍一下UI设计培训学习中必须掌握的设计原则。 UI设计培训学习中必须掌握的设计原则&#xff1a; 重复 在平…

【复盘】如何培养小朋友的编程能力?

Scratch家长群已成立&#xff0c;微信后台回复【Scratch家长群】&#xff0c;即可进入。 如果加入了之前的社群不需要重复加入。 前几天&#xff0c;我在得到听了 邵慧宁的故事&#xff0c;就想着把游戏化的思维应用于培养自己孩子的编程能力上&#xff0c;并邀请志同道合的家长…

ubuntu系统下载编译android源码

在ubuntu系统下编译android需要注意的事项&#xff1a;1. 参考http://source.android.com/中的安装说明。2. 安装JDK6中碰到的问题可以参考http://hi.baidu.com/designhouse/item/0dbece7c4f6af0376e29f6c1中的说明&#xff0c;记得配置环境变量。3. 下载代码时如果出现timeout…

[windows server 2008 站点系列五]一招加速域用戶的文件查找速度

在企业IT基础环境中&#xff0c;文件服务器的应用越来越平凡&#xff0c;而文件服务器的数量也随之增多。作为IT应用人员习惯性的从管理者的角度出发&#xff0c;找寻DFS等帮助简化管理维护的解决方案。但是&#xff0c;另一方面&#xff0c;企业用户往往很难在为数众多的文件服…

在web.xml文件中配置Servlet时,主要配置哪些信息?

web前端的学习内容是比较多的&#xff0c;其中有一部分就是关于在web.xml文件中配置Servlet时的相关内容&#xff0c;在web.xml文件中配置Servlet时&#xff0c;主要配置哪些信息?来看看下面的详细介绍。 使用IDE开发Servlet时&#xff0c;配置信息可以通过可视化方式定义。然…

Oracle Study之--ORA-12537(TNS:connection closed) 错误案例

系统环境&#xff1a; 操作系统&#xff1a;RedHat EL55 Cluster&#xff1a; Oracle 11gR2 GRID Oracle&#xff1a; Oracle 11gR2 在构建Oracle 11gR2 RAC时出现以下错误&#xff1a; 1、建库时 2、Listener 日志信息 3、客户端连接错误信息 解决方案&#xff1a; 123456789…

MEF: MSDN 杂志上的文章(9) 控制部件创建策略 ???

http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx 默认情况下&#xff0c;容器中的所有部件实例都是单例&#xff0c;因而由在容器中导入它们的所有部件共享。因此&#xff0c;SalesOrderView 和 ViewFactory 的所有导入程序都将获得同一实例。在很多情况下需要这样&am…