软件测试培训教程: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插件,可用于设备并行执行。
二、用例前置和后置
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:时间转换 蓝桥杯刷题群已成立,微信后台回复【蓝桥杯】,即可进入。 如果加入了之前的社群不需要重复加入。 时间限制: 1Sec 内存限制: 128MB 1. 题目描述 给定一个以秒为单位的时间t,要求用 “< H> :< M> …

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

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

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

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

互联网企业的移动布局
转载于:https://www.cnblogs.com/deve/archive/2012/06/13/2568988.html

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

常见http状态码说明(转)
首先要先了解下什么是HTTP状态码:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。每当客户端向Web服务器发送一个HTTP请求时,服务器都会返回一个响应代码。而这些响应代码主要分成五类:…

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

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

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

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

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

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

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

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

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

怎么获得combobox的valueField值
var a; var dwField new Ext.form.ComboBox({ fieldLabel:管理员, mode: local, width:70, id:user_name, …

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

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

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

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

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

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

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

[windows server 2008 站点系列五]一招加速域用戶的文件查找速度
在企业IT基础环境中,文件服务器的应用越来越平凡,而文件服务器的数量也随之增多。作为IT应用人员习惯性的从管理者的角度出发,找寻DFS等帮助简化管理维护的解决方案。但是,另一方面,企业用户往往很难在为数众多的文件服…

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

Oracle Study之--ORA-12537(TNS:connection closed) 错误案例
系统环境: 操作系统:RedHat EL55 Cluster: Oracle 11gR2 GRID Oracle: Oracle 11gR2 在构建Oracle 11gR2 RAC时出现以下错误: 1、建库时 2、Listener 日志信息 3、客户端连接错误信息 解决方案: 123456789…

MEF: MSDN 杂志上的文章(9) 控制部件创建策略 ???
http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx 默认情况下,容器中的所有部件实例都是单例,因而由在容器中导入它们的所有部件共享。因此,SalesOrderView 和 ViewFactory 的所有导入程序都将获得同一实例。在很多情况下需要这样&am…