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装饰,测试用例的方法上使用@data0来来实现数据驱动  
  • pytest参数化
    • 通过装饰器@pytest.mark.parametrize来实现数据驱动  

5.生成报告方式

  • unittest

    • 通过HTMLTestRunner生成  
  • pytest
    • 通过pytest-html生 成html格式报告  
    • 通过与allure集成生成优美的allure报告  

*******尊重作者,本文是本人转载自:https://www.cnblogs.com/xiaogongjin/    *******

原文地址:https://www.cnblogs.com/shouhu/p/12274705.html

时间: 2024-08-30 15:19:12

pytest 框架与 unittest 框架的对比的相关文章

unittest单元测试框架之unittest 框架的总结(七)

1. Unittest 是 python 自带的单元测试框架,可以用其作为自动化框架来组织测试用例(测 试用例的执行顺序)的执行. 2. Unittest 框架的流程: 写好 TestCase 通过 TestLoader 加载 TestCase 到 TestSuite 中 通过 TextTestRunner 来原型 TestSuite,结果保存在 TextTestResult 中,我们通过命 令行或者 unittest.main()来执行 3.通过 TextTestRunner 来原型 Test

unittest单元测试框架之unittest 框架的总结2(八)

unittest 下的属性 1.Unittest.TestCase:所有测试用例类继承的基本类 2.Unittest.main():将一个单元测试模块变为可直接运行的测试脚本 If __name__ == "__main__": Unittest.main() 3.Unittest.TestSuite:创建测试套件 4.unittest.TextTestRunner():unittest 框架的 TextTestRunner()类,通过该类下面的 run()方 法来运行 suite 所

Python测试框架之unittest和pytest

目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架,着重解决运行效率低的问题.最近调研了一下另一种主流测试框架Pytest,Pytest是一个非常成熟的全功能的Python测试框架,本文主要对比了Unittest和Pytest这两种较为流行的Python测试框架. 一.Unittest Unittest是Python标准库中自带的单元测试框架,Un

Python单元测试框架 :unittest

unittest是xUnit系列框架中的一员,如果你了解xUnit的其他成员,那你用unittest来应该是很轻松的,它们的工作方式都差不多. unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 下面我们分别来解释这四个概念的意思,先来看一张unittest的静态类图(下面的类图以及解释均来源于网络,原文链接): 一个TestCase的实例就是一个测试用例.什么是测试用例呢?就是一

unittest框架执行用例

pycharm中运行脚本的方式总共有三种,分别为:unittest模式,pytest模式,普通模式,今天主要来聊一聊unittest模式执行与普通执行(因为最近在学习unittest框架,所以pytest以后再说),不多说先上脚本 1 import unittest 2 3 4 class MyTest(unittest.TestCase): 5 6 def setUp(self): 7 print("==setUp==") 8 9 def tearDown(self): 10 pri

unittest框架

unittest框架 1.写用例:TestCase 类2.加载用例:TestSuite 类    TestLoader 类3.对比结果(执行结果/期望结果):assert函数4.执行并出结果:TextTestRunner 类5.报告:HtmlTestReport 类 1)首先建一个math_method.py文件,用来存在被测试函数 1 # 被测类函数 2 class MathMethod(): 3 4 def add(self, a, b): 5 return a + b 6 7 def su

python单元测试之unittest框架

python单元测试之unittest框架 一.什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入相同 (2)输入复数,比如-1.-1.2.-0.99,期待返回值与输入相反 (3)输入0,期待返回0 (4)输入非数值类型,比如None.[].{}.期待抛出TypeError 把上面这些测试用例放到一个测试模块里,就是一个完整的单元测试 我们先写一个

iOS网络层框架之AFNetworking与 ASIHTTPRequest对比

在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等. 那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?几乎每一个iOS互联网应用开发者都会面对这样的选择题,要从这两个最常用的组件里选出一个好的还真不是那么容易

IOS 与ANDROID框架及应用开发模式对比一

IOS 和ANDROID操作系统都是目前流行的移动操作系统,被移动终端和智能设备大量采用,两者都采用了先进的软件技术进行设计,为了方便应用开发两者都采用了先进的设计模式.两者在框架设计上都采用了什么技术?都采用了什么设计模式?两者设计思路和应用开发模式有什么异同呢? 两者都采用了框架模式. IOS 的框架称为Cocoa Touch. 框架提供两个作用,一是类的集合,每个类构建一个问题空间,并提供完整的解决方案和服务:二更重要的是框架中的类相互依赖构成一个整体,制订并实现整个应用程序的结构.框架定