前言

今天呢笔者想和大家来聊聊Python单元测试框架,我们都知道python单元测试框架有很多,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。废话不多说了咱们直接进入主题哟。

一、用例编写规则

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

  (1)测试文件必须先import unittest

  (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,只能针对所有用例。

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)运行在调用方法的前后

3.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")可以只运行标记的类和方法。

八、如果不好看,可以看下面表格:

总体来说,unittest用例格式复杂,兼容性无,插件少,二次开发方便。pytest更加方便快捷,用例格式简单,可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。

总结

今天的文章就到这里了哟,喜欢的小伙伴可以点赞收藏评论加关注哟。

python单元测试框架之unittest和pytest的区别相关推荐

  1. Python单元测试框架之unittest+requests+ddt+excel接口自动化测试

    unitetest是python里单元测试框架,是基于 java 的 junit 测试框架 相当于是一个 python 版的 junit,除了 unittest,还有一个 pytest 框架 unit ...

  2. Python单元测试框架介绍

    背景 为啥把单元测试框架介绍放到这里讲,其实主要是想讲pytest框架的应用.这也是应网友的心声.其实pytest框架我以前是用在实际项目中的,只是一直没有将实践过程和经验教训沉淀下来.如今,我想还是 ...

  3. python自动化测试框架哪个好_Python 自动化测试框架unittest与pytest的区别

    引言 前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平 ...

  4. python测试框架untest_Python测试框架之unittest和pytest

    目前搜狗商城接口测试框架用的是unittest+HTMLTestRunner,case数有1097条,目前运行一次自动化测试,时长约为30分钟,期望控制在10分钟或者更短的时间内.近期打算重新优化框架 ...

  5. Python单元测试框架之pytest 3 -- fixtures

    From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...

  6. Python单元测试框架Pyunit 的使用

    Python单元测试框架Pyunit 使用示例: 1 import unittest 2 3 class Person: 4 def age(self): 5 return 34 6 def name ...

  7. 【整理】Python 单元测试框架 - PyUnit

    1 概况 Python单元测试框架(The Python unit testing framework),简称为PyUnit, 是Kent Beck和Erich Gamma这两位聪明的家伙所设计JUn ...

  8. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

    测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求, ...

  9. python单元测试框架作用_Python单元测试框架:Pytest简介

    Pytest简介 入门简单,文档丰富 支持单元测试.功能测试 支持参数化 重复执行,部分执行,测试跳过 兼容其他测试框架(nose,unittest等) 支持生成html报告 可集成CI环境(Jenk ...

最新文章

  1. 安装Hadoop系列 — 导入Hadoop源码项目
  2. 分享10个实用的高效办公神器,极大地提高办公效率
  3. LoRa VS NB-IoT,一场物联网时代C位争夺战
  4. mysql 连续签到天数_天天拿帮会通宝 帮会签到真给力
  5. [转自脚本之家] Javascript cookie 详解
  6. T端音乐盒子-NPC脚本
  7. php 微盘系统教程,新版微盘API接口调用方法
  8. python浮雕图片_python图像数据增强——imgaug (二)
  9. Adobe Flex初记
  10. 编写MapReduce程序,实现WordCount
  11. 虚拟机怎么启动共享文件服务器,VMware虚拟机中ubuntu启用本地文件共享的设置方法...
  12. SIFT(Scale Invariant Feature Transform) 算法小结及实验
  13. snort:Packet结构体详解(留坑)
  14. 搜狗输入法原先能在word中输入中文,现在不行。
  15. 手游人类一败涂地联机一直连接服务器,人类一败涂地手游怎么联机
  16. python学习相关软件
  17. 谷歌中阻止冒泡在火狐中失效_如何在Google表格中乘数字
  18. cursor的所有样式
  19. php花朵飘落特效,【新年气象】WordPress 主题添加花瓣飘落特效
  20. 5G的前世今生---简述移动通信的发展

热门文章

  1. Linux 的wget命令和rz和sz命令
  2. 简单易操作 VsCoe离线安装插件【步骤+图片+插件】
  3. matlab生鲜或农产品(河马等)配送路径优化研究【matlab优化算法十八】
  4. c语言中有bool变量吗,C语言中有bool类型吗?
  5. Spark远程调试+页面监控--用最熟悉的方式开发Spark应用
  6. Opencv(C++)学习系列---特征点检测和匹配
  7. UML类图中连接线与箭头的含义(转)
  8. 基于ssm阳光心理健康网站的设计与实现-计算机毕业设计源码+LW文档
  9. STM32单片机入门例程(1.GPIO端口硬件结构)
  10. 网件WNR2200 Openwrt固件, 改进刷机方法