pytest框架与unittest框架的对比
一、pytest的优势
pytest是基于unittest之上的单元测试框架,它的优势如下:
- 自动发现测试模块和测试方法
- 断言使用 assert + 表达式
- 可以设置测试会话级(session)、模块级(module)、类级(class)、函数级(function)的fixture来共享测试用例的前置和后置
- 有丰富的插件库,目前已经700+,pytest插件地址:http://plugincompat.herokuapp.com/
二、与unittest的对比
1.用例设计规则
- unittest
- 测试类必须继承unittest.TestCase
- 测试函数必须以"test_"开头
- 使用defaultTestLoader.descover()加载测试用例时,测试模块(py文件)名称要以test_开头
- pytest
- 测试模块文件的文件名必须以"test_"开头或者以"_test"结尾
- 测试类命名必须以"Test"开头
- 测试函数名必须以"test"开头
- 测试类里面不能使用"__init__"方法
2.断言对比
- unittest断言
- assertEqual(a, b) 判断 a 和 b 是否相等
- assertNotEqual(a, b) 判断 a 不等于 b
- assertTrue(a) 判断 a 是否为 Ture
- assertFalse(a) 判断 a 是否为 False
- assertIn(a, b) a 包含在 b 里面
- asserNotIn(a, b) a 不包含在 b 里面
- ......
- pytest断言
- assert + 表达式
3.用例前置和后置
- unittest前置和后置
- 通过setup每个用例执行前执行,teardown每个用例执行后执行
- 通过setupclass类里面所有用例执行前执行,teardownclass类里面所有用例执行后执行
- pytest前置和后置
- 会话级别:session,整个测试执行会话全部用例开始前执行/全部用例执行完后执行
- 模块级别:module,只对模块级别生效,整个.py全部用例开始前执行/全部用例执行完后执行
- 类级别:class,只对类级别生效,整个测试类全部用例开始前执行/全部用例执行完后执行
- 函数级别:function,只对函数级别生效,每个用例开始前和结束后执行一次
4.参数化
- unittest参数化
- 结合ddt模块,在类上面使用@ddt装饰,测试用例的方法上使用@data()来来实现数据驱动
- pytest参数化
- 通过装饰器@pytest.mark.parametrize来实现数据驱动
5.生成报告方式
- unittest
- 通过HTMLTestRunner生成
- pytest
- 通过pytest-html生成html格式报告
- 通过与allure集成生成优美的allure报告
pytest框架与unittest框架的对比的更多相关文章
- unittest单元测试框架之unittest 框架的总结2(八)
unittest 下的属性 1.Unittest.TestCase:所有测试用例类继承的基本类 2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本 If __name__ ...
- unittest单元测试框架之unittest 框架的总结(七)
1. Unittest 是 python 自带的单元测试框架,可以用其作为自动化框架来组织测试用例(测 试用例的执行顺序)的执行. 2. Unittest 框架的流程: 写好 TestCase 通过 ...
- python之unittest框架实现接口测试实例
python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...
- pycharm中脚本执行的3种模式(unittest框架、pytest框架、普通模式)
背景知识,某次使用HTMLTestRunner的时候,发现一直都无法导出报告,后来查询资料发现了一些坑,现在整理一下来龙去脉. 一:pycharm默认的是pytest框架去执行unittest框架的测 ...
- python学习笔记之——unittest框架
unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做UI自动化测试和接口的自动化测试. unittest框架为我们编写用例提供了如下的能力 定义用例的能 ...
- 【Pytest】python单元测试框架pytest简介
1.Pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.根据pytest的官方网站介绍 ...
- 国内常用的三种框架:ionic/mui/framework7对比
国内常用的三种框架:ionic/mui/framework7对比 原文连接:http://zhihu.com/question/19558750/answer/91179040
- selenium-webdriver(python) (十六) --unittest 框架
学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试(一)----selen ...
- Selenium2+python自动化30-引入unittest框架
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.com ...
随机推荐
- SqlServer性能优化,查看CPU、内存占用大的会话及SQL语句
1,查看CPU占用量最高的会话及SQL语句 select spid,cmd,cpu,physical_io,memusage, (select top 1 [text] from ::fn_get ...
- MySQL创建、修改、删除数据库
创建数据库 CREATE DATABASE [IF NOT EXISTS] t1 CHARACTER SET [=] utf8: 中括号中的代码可有可无:CHARATER如果不写则创建为默认的字符. ...
- 误区以为父组件render一次,子组件会重新初始化
初学react的时候我有一个误区,以为父组件render的一次,会将子组件先卸载,再将子组件重新初始化,事实证明不是. 这是对react生命周期函数不太清楚. 父子组件都初始化后,父组件再render ...
- JavaScript-----11.预解析
1.预解析 1.1引子 //1问 console.log(num);//报错 num未定义 //2问 console.log(num); //undefined 未报错 var num = 10; / ...
- 在IOS设备上POST提交form表单,后台接收不到值怎么办?
原文:https://blog.csdn.net/xhaimail/article/details/90440029 最近在工作上遇到一个奇葩问题,在Android和Windows平台上做请求时参数都 ...
- SpringMVC 简单限流方案设计
一.概念 限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务.排队或等待.降级等处理. 常用的限流算法有两种:漏桶算法和令牌桶算法: ...
- 云数据库MongoDB版清理oplog日志和compact命令详解
1.问题描述: 今天看到公司mongodb的oplog有点大,看到云数据库MongoDB版日志清理策略. MongoDB数据库在长期频繁地删除/写入数据或批量删除了大量数据,将产生很多物理空间碎片. ...
- Spring 框架基础(03):核心思想 IOC 说明,案例演示
本文源码:GitHub·点这里 || GitEE·点这里 一.IOC控制反转 1.IOC容器思想 Java系统中对象耦合关系十分复杂,系统的各模块之间依赖,微服务模块之间的相互调用请求,都是这个道理. ...
- 【带着canvas去流浪(9)】粒子动画
目录 一. 粒子特效 二. 开发中遇到的问题 2.1 卡顿 2.2 轨迹 2.3 复位 2.4 防护层 2.5 二维向量类 三. 实现讲解 3.1 粒子类的update方法 3.2 粒子群的绘制 3. ...
- 一起学Android之AsyncTask
概述 在Android开发中,为了方便我们在后台线程中执行操作,然后将结果发送给主线程,从而在主线程中进行UI更新等操作,Anddroid开发框架提供了一个助手类AsyncTask,它对Thread和 ...