关于unittest的介绍及应用
关于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时跳过。
看用例需要,这个装饰器还是挺好用的
五、总结
- 要使用unittest这个测试框架时,需要先导入unittest
- 定义一个测试类时,要继承unittest.TestCase这个类
- 测试用例必须以test开头,否则不会被执行。
- 测试用例执行顺序是根据用例名称A-Z顺序来执行的
- TestSuite可控制执行的顺序
参考博客:https://blog.csdn.net/luanpeng825485697/article/details/79459771
参考书籍:Python自动化测试实战
关于unittest的介绍及应用相关推荐
- Unittest框架介绍及常用组件
1.unittest框架介绍 unittest是Python自带单元测试框架,提供丰富的用例管理.执行和断言操作. 2.unittest框架常用组件 (1)TestCase,测试用例,继承于TestC ...
- Unittest框架介绍
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...
- 使用python构造大量测试数据_python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)...
---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...
- python中的UnitTest框架
一.UnitTest框架介绍 框架说明: 1.框架英文单词framework 2.为解决一类事情的功能集合 〉需要按照框架的规定(套路)去书写代码 什么是UnitTest框架? 概念:UnitTest ...
- 【07节】Python3+Selenium4自动化 unittest 测试框架详解
文章目录 1.unittest 框架介绍 2.创建单元测试步骤 3.unittest 模块介绍 3.1 TestCase 类 3.1.1 TestCase 类常用方法: 3.1.2 TestCase ...
- 自动化专业学python有用吗-马哥教育官网-专业Linux培训班,Python培训机构
今天小编要来说一下Python自动化的学习思路, 对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢? 简单的说, 做测试做的好,会了接口,会了 ...
- 一文带你用python做自动化测试
python 是目前测试推广最多的语言,翻翻各大招聘公司,测试要求会 python的比比皆是,而且易学易用. Selenium 是 Thought Works 公司开创的一套基于 web 应用的自动化 ...
- java jar反编译后保存_java根据jar包反编译后修改再打包回jar的做法
1. 得到一个待要修改的jar包 2. 我的环境是windows,然后解压这个jar包,得到一堆class文件,这时候就找到你需要的那个class文件 3. 我首先是使用jd-gui工具看一下这个cl ...
最新文章
- UA OPTI512R 傅立叶光学导论5 光学常用基本函数回顾
- 【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作
- 今天一看,自己发的文章原来这么多了。openeim
- vector 使用 c++11 Lambda 表达式 排序
- 7年赚出两个阿里加两个腾讯,他是地表最强打工人!
- 红外遥控c语言,NEC协议红外遥控器
- python pandas 处理相同标题的csv文件_Python使用pandas处理CSV文件的实例讲解
- Linux基础——为什么要学Linux?
- 用集合return多个值_Laravel + Nestedset 扩展:嵌套集合模型实现无限级分类
- {$POINTERMATH ON} 方便指针操作的编译指令
- 常见设计规范与 Sketch 源文件下载集合
- chrome扩展程序安装_如何在Windows上删除“由企业策略安装”的Chrome扩展程序
- 教你修改Win7系统的登录界面背景
- win7如何更改计算机管理员用户名和密码,Win7如何修改管理用户名
- wangEditor光标乱跳问题
- C语言谭浩强第三版第八章例题及课后题:函数
- PO,VO,DAO,BO,POJO之间的区别与解释
- 如何选择适合你的兴趣爱好(十五),油画
- Linux如何让lst自动对齐,linux自動增加表空間
- MyBatis源码的学习(9)---映射器mappers的的XML解析