关于unittest的介绍及应用

  • 一、unittest初识
  • 二、OCC后端API自动化框架介绍
  • 三、快速开始
  • 四、常见断言及装饰器
  • 五、总结

一、unittest初识

unittest是python内置的单元测试框架(也称PyUnit),可以实现对软件的测试驱动开发过程。unittest模块提供了一种规范的方法来构造单元测试用例,支持测试的自动化处理,更多的功能包括共享代码测试的初始化和结束代码、将测试用例封装成测试套件以及测试的多元化显示等。它与Junit工具十分相似。

TestCase:测试用例,单元测试的最小组成部分。是一个完整的测试流程,包含测试前准备环境搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。一个测试用例是一个完整的测试单元,能对某一个问题进行验证。
TestFixture:测试固件,测试用例环境的搭建和销毁,包含四个方法。setUp、tearDown在每一个test_*方法前后执行;setUpClass、tearDownClass在这个TestCase类下前后只执行一次,需要用@classmethod注解标识。
TestSuite:测试套件,可以把多个测试用例集合在一起,而且是有顺序的。测试套件是可以嵌套的,可以在测试套件中包含测试套件。
TestRunner:测试执行,用来执行测试用例,其中run(test)能执行TestSuite/TestCase
TestLoader:加载测试用例,有unittest.TestLoader().loadTestsFromTestCase(类名)
和unittest.TestLoader().loadTestsFromName(方法名)等方法,常用的加载测试用例的方法是unittest.defaultTestLoader.discover(‘文件所在路径’,pattern=‘文件名.py’)

二、OCC后端API自动化框架介绍

三、快速开始

先贴一个TestCase来
class api_resource_mcu_detail(unittest.TestCase):
@classmethod
def setUpClass(self):
print("======我只会运行一次哟")
self.headers = localconfighttp.login()[1]
def setUp(self):
print("======预测我会被重复运行")
def test_resource_mcu_detail(self):
id = function_resource_mcu_getId(self.headers)
params = {“id”:id}
self.assertEqual(normal_post(self.headers,params,detail_resource_mcu)[‘code’],0)

#ID为空
def test_medium_resource_mcu_detail_01(self):params = {"id":None}self.assertEqual(normal_post(self.headers,params,detail_resource_mcu)['code'],errCode)
#ID不合法
def test_medium_resource_mcu_dateil_02(self):params = {"id":"-1"}self.assertEqual(normal_post(self.headers,params,detail_resource_mcu)['code'],errCode)

运行结果截图:

主函数:
if name == ‘main’:
testSuite = unittest.TestSuite()
file = open(‘D:/PyProject/caselist.txt’)
pyname = []
for i in file.readlines():
if(i !="" and not i.startswith("#")):
pyname.append(i.replace("\n", “”))
print(pyname)
sunitmodel = []
for name in pyname:
suite = unittest.defaultTestLoader.discover(“D:/PyProject/mcuPro/”, pattern=name+".py")
sunitmodel.append(suite)
print(sunitmodel)
if len(sunitmodel) > 0:
for suite_m in sunitmodel:
for case in suite_m:
print("========case:"+str(case))
testSuite.addTests(case)

runner = unittest.TextTestRunner(verbosity=2)
runner.run(testSuite)

unittest.defaultTestLoader.discover能找到指定目录下所有测试模块。某个py文件里面的所有test*方法
TestLoader:
该类根据各种标准加载测试用例,并将它们返回给测试套件。正常情况下,不需要创建这个类的实例。unittest提供了可以共享的defaultTestLoader类,可以使用其子类和方法创建实例,discover()就是其中之一。
discover()找到的TestSuite:

打印测试结果及测试报告
runner = unittest.TextTestRunner(verbosity=2)
该verbosity参数,用以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告
或者产出html报告
fp = open("./result/result.html", ‘wb’)
print(suit)
runner=HTMLTestRunner.HTMLTestRunner(stream=fp, title=‘Test Report’, description=‘COP API 测试’)
还可以txt形式产出
测试报告:

四、常见断言及装饰器

断言的作用:检测程序运行的结果和预期。unittest提供了很多实用的方法。
检查值是否相等:assertEqual(element.text, “10”) assertNotEqual(a,b)
检查表达式为true或false:assertTrue() assertFalse()
检查异常:assertRaise(exc) assertRaisexp(exp) 对异常情况进行捕获,使程序正常运行下去
skip装饰器一共有三个 unittest.skip(reason)、unittest.skipIf(condition,reason)、unittest.skipUnless(condition,reason),skip无条件跳过,skipIf当condition为True时跳过,skipUnless当condition为False时跳过。
看用例需要,这个装饰器还是挺好用的

五、总结

  1. 要使用unittest这个测试框架时,需要先导入unittest
  2. 定义一个测试类时,要继承unittest.TestCase这个类
  3. 测试用例必须以test开头,否则不会被执行。
  4. 测试用例执行顺序是根据用例名称A-Z顺序来执行的
  5. TestSuite可控制执行的顺序

参考博客:https://blog.csdn.net/luanpeng825485697/article/details/79459771
参考书籍:Python自动化测试实战

关于unittest的介绍及应用相关推荐

  1. Unittest框架介绍及常用组件

    1.unittest框架介绍 unittest是Python自带单元测试框架,提供丰富的用例管理.执行和断言操作. 2.unittest框架常用组件 (1)TestCase,测试用例,继承于TestC ...

  2. Unittest框架介绍

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  3. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...

    1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...

  4. 使用python构造大量测试数据_python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)...

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

  5. python中的UnitTest框架

    一.UnitTest框架介绍 框架说明: 1.框架英文单词framework 2.为解决一类事情的功能集合 〉需要按照框架的规定(套路)去书写代码 什么是UnitTest框架? 概念:UnitTest ...

  6. 【07节】Python3+Selenium4自动化 unittest 测试框架详解

    文章目录 1.unittest 框架介绍 2.创建单元测试步骤 3.unittest 模块介绍 3.1 TestCase 类 3.1.1 TestCase 类常用方法: 3.1.2 TestCase ...

  7. 自动化专业学python有用吗-马哥教育官网-专业Linux培训班,Python培训机构

    今天小编要来说一下Python自动化的学习思路, 对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢? 简单的说, 做测试做的好,会了接口,会了 ...

  8. 一文带你用python做自动化测试

    python 是目前测试推广最多的语言,翻翻各大招聘公司,测试要求会 python的比比皆是,而且易学易用. Selenium 是 Thought Works 公司开创的一套基于 web 应用的自动化 ...

  9. java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法

    1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...

最新文章

  1. UA OPTI512R 傅立叶光学导论5 光学常用基本函数回顾
  2. 【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作
  3. 今天一看,自己发的文章原来这么多了。openeim
  4. vector 使用 c++11 Lambda 表达式 排序
  5. 7年赚出两个阿里加两个腾讯,他是地表最强打工人!
  6. 红外遥控c语言,NEC协议红外遥控器
  7. python pandas 处理相同标题的csv文件_Python使用pandas处理CSV文件的实例讲解
  8. Linux基础——为什么要学Linux?
  9. 用集合return多个值_Laravel + Nestedset 扩展:嵌套集合模型实现无限级分类
  10. {$POINTERMATH ON} 方便指针操作的编译指令
  11. 常见设计规范与 Sketch 源文件下载集合
  12. chrome扩展程序安装_如何在Windows上删除“由企业策略安装”的Chrome扩展程序
  13. 教你修改Win7系统的登录界面背景
  14. win7如何更改计算机管理员用户名和密码,Win7如何修改管理用户名
  15. wangEditor光标乱跳问题
  16. C语言谭浩强第三版第八章例题及课后题:函数
  17. PO,VO,DAO,BO,POJO之间的区别与解释
  18. 如何选择适合你的兴趣爱好(十五),油画
  19. Linux如何让lst自动对齐,linux自動增加表空間
  20. MyBatis源码的学习(9)---映射器mappers的的XML解析

热门文章

  1. 10月25日 c语言 读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
  2. 大数据可视化的方法、挑战及进展
  3. 美团点评2018春招后台开发方向编程题 - 题解
  4. 商业智能BI与业务结构分析
  5. SQL Server 2008 R2自定义快捷键快捷查询表的内容
  6. 大数据入门--windows安装sqlite3
  7. 当面试官问Webpack的时候他想知道什么
  8. 使用 PyTorch 检测眼部疾病
  9. 推荐一个windows下使用的无广告解压缩软件
  10. 强化学习:Actor-Critic、SPG、DDPG、MADDPG