首页 > 编程语言 >python测试框架unittest和pytest区别

python测试框架unittest和pytest区别

时间:2023-12-25 20:33:04浏览次数:31  
标签:__ python unittest print 用例 pytest test


一、用例编写规则

(1)unittest提供了test cases、test suites、test fixtures、test runner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:

  • 测试文件必须先import unittest
  • 测试类必须继承unittest.TestCase
  • 测试方法必须以“test_”开头
  • 测试类必须要有unittest.main()方法

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

  • 测试文件名必须以“test_”开头或者"_test"结尾(如:test_ab.py)
  • 测试方法必须以“test_”开头。
  • 测试类命名以"Test"开头。

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


二、用例前置和后置

(1)unittest提供了setUp/tearDown,每个用例运行前、结束后运行一次。setUpClass和tearDownClass,用例执行前、结束后,只运行一次。
(2)pytest提供了模块级、函数级、类级、方法级的setup/teardown,比unittest的setUp/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装饰器。


使用示例

unittest

class DefaultTestCase(unittest.TestCase):
 
def setUp(self):
print "Start to run"
 
def tearDown(self):
print "Close"
 
class TestDefaultTestCase(DefaultTestCase):
 
def test_print_b(self):
print 'b'
 
def test_print_a(self):
print 'a'
 
 
if __name__ == '__main__':
unittest.main()

运行结果:

python测试框架unittest和pytest区别_程序员

pytest

import os
import pytest
 
# pytest是python的单元测试框架
 
def func(x):
return x + 1
 
 
def test_a():
print("____test_a____")
assert func(2) == 5
 
def test_b():
print("____test_b____")
assert func(2) == 3
 
if __name__ == '__main__':
pytest.main(["-s","pytest1.py"])

标签:__,python,unittest,print,用例,pytest,test
From: https://blog.51cto.com/u_15333581/8971759

相关文章

  • Python 中 key 参数的含义及用法
    哈喽大家好,我是咸鱼我们在使用sorted()或map()函数的时候,都会看到里面有一个key参数其实这个key参数也存在于其他内置函数中(例如min()、max()等),那么我们今天就来了解一下key参数的含义以及用途吧!原文:https://www.thepythoncodingstack.com/p/the-key-to-the-key-p......
  • pdm符合最新PEP标准的现代python 包以及依赖管理工具
    pdm符合最新PEP标准的现代python包以及依赖管理工具支持的特性简单快速的维护依赖解析,主要为了构建大的二进制分发PEP517构建后端PEP621项目元数据灵活强大的插件系统多功能用户脚本类似pnpm的中心化安装优化安装命令使用过的mac系统的 brewin......
  • 将Python转换为exe文件并更换图标的方法
    使用python语言可以很方便的编写一些脚本来帮助我们完成测试等工作,但是python的运行需要依赖于python库,如果没有python库就无法正常运行脚本完成工作。那么有没有什么办法,可以在不依赖库的前提下执行脚本?我们可以将python转换成exe可执行文件,这样生成的exe可执行文件就不需要以来p......
  • Python中的变量是什么?数据类型又有哪些?
    Python语言的基础构成要素:变量与数据类型。因为不仅是Python,变量与数据类型可以说是所有编程语言的核心。掌握了语言的变量与数据类型的体系,可以说就掌握了这门语言的一大半儿。1、什么是变量我们都知道应用程序在运行阶段的数据存放在内存中,那实现应用程序的编程语言是怎么操......
  • 随机幸运号码自动生成器之Python宝典【下】
    一、背景在随机幸运号码自动生成器之Python宝典【上】中,成功开发了一个能够展示幸运号码并且能够动态显示当前时间的浮动小工具,需要在有Python环境的电脑上运行。本文将介绍如何将小工具打包成exe并使其能够自动在windows电脑上运行二、步骤打包exe之前的文章中已经详细介绍过pyins......
  • Python——Html(HEAD头部)
    HTML中HEAD头部设置(了解)在HTML中,<head>元素是文档的头部部分,通常包含了一些关于文档的元信息和链接到外部资源的标签。以下是一些常见的<head>元素中使用的标签及其作用:<title>:设置网页的标题设置网页的标题,显示在浏览器的标题栏或标签页上。示例:<head><title>M......
  • python初试四
    我们在上一课中讲到了服务器上的数据。当时我们是用手动的方式,直接在数据库插入数据。我们将允许客户向服务器传递数据。表格是客户向服务器传数据的经典方式。我们先会看到传统的表格提交,然后了解Django的表格对象。html表格HTTP协议以“请求-回复”的方式工作。客户发送请求时,......
  • python枚举类型Enum
    在Python中,枚举类型可以通过enum模块来实现。enum模块提供了Enum类,用于创建具有命名值的枚举类型。枚举类型的创建方式包括使用类定义、使用函数和使用装饰器。1.定义一个枚举类fromenumimportEnumclassWeekday(Enum):MONDAY=1TUESDAY=2WE......
  • Python描述符
    1、描述符定义先看下描述符的定义。如果在一个新式类中至少实现了__get__(),__set__(),__delete__()中的一个,则称作这个的新式类为描述符,也称为描述符协议。__get__():调用一个属性时触发;__set__():一个属性赋值时触发;__delete__():采用del删除属性时触发;......
  • Python 爬虫在数据分析方面有什么潜力
    在当今信息爆炸的时代,大量的数据被生成和存储,这给企业、学术界和个人提供了巨大的机会和挑战。爬虫作为一种数据获取的技术手段,可以帮助我们从互联网上获取大量的数据。结合数据分析技术,爬虫在数据分析方面具有巨大的潜力。本文将介绍一些爬虫在数据分析方面的潜力和应用场景。1.获......