Unittest框架之测试套件:TestSuite
前言
- 使用了unittest.main()方法执行当前模块里的测试用例。
- 除此之外,Unittest还可以通过测试套件构造测试用例集,再执行测试用例
将测试用例添加至TestSuite(测试套件)
方式一:加载测试用例
- 先通过unittest.TestSuite() 创建测试套件实例对象,如:suite = unittest.TestSuite()
- 再通过addTest() 往测试套件里添加单个测试用例,或通过addTests([…]) 添加多个测试用例(列表中为用例方法名)
- 执行测试套件里的测试用例
- 问题?如果有多个用例,如果类里100个用例?要添加100次?
# -*- coding: utf-8 -*-
# @Author : 微信公众号:程序员一凡 import unittest class TestHC(unittest.TestCase): def test01(self):
print("用例1") def test02(self):
print("用例2") if __name__ == '__main__': """方式1添加单条用例"""
# 创建suite实例
suite = unittest.TestSuite()
# 添加单条测试用例
suite.addTest(TestHC("test02")) **# addTest()里参数格式为:测试类('测试方法')**
suite.addTest(TestHC("test01")) """方式2添加多条用例"""
# suite.addTests([TestHC('test02'), TestHC('test01')])
方式二:加载测试用例类
- 先通过unittest.TestSuite() 创建测试套件实例对象。
- 再通过unittest.TestLoader()创建加载对象,加载测试用例类
# -*- coding: utf-8 -*-
# @Author : 微信公众号:程序员一凡 import unittest class TestHC(unittest.TestCase): def test01(self):
print("用例1") def test02(self):
print("用例2") class Test_Action(unittest.TestCase):
def test03(self):
print("用例3") def test04(self):
print("用例4") if __name__ == '__main__': """方式1添加单条用例"""
# 创建suite实例
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestHC))
suite.addTest(loader.loadTestsFromTestCase(Test_Action)) """
添加多个类的方法
suite1 = unittest.TestLoader().loadTestsFromTestCase(TestHC)
suite2 = unittest.TestLoader().loadTestsFromTestCase(Test_Action)
suite = unittest.TestSuite([suite1, suite2])
"""
方法三:加载指定路径里的测试用例
- 通过unittest.defaultTestLoader.discover()将指定路径的测试用例加载至测试用例集。注意:这里不需要创建unittest.TestSuite对象
- 如下代码所示,test_dir为指定路径。pattern=test_*.py 表示加载以test_开头的模块中的测试用例,指定运行某模块时pattern参数指定全名即可,如:pattern=‘test_sum.py’。路径跟pattern参数都可以自定义
import unittest # discover可以一次调用多个脚本
# test_dir 被测试脚本的路径
# pattern 脚本名称匹配规则 test_dir = "./test_case"
discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py") # 匹配test_case目录下所有以test开头的py文件,执行这些py文件下的所有测试用例
if __name__ == "__main__":
runner=unittest.TextTestRunner()
runner.run(discover)
使用TextTestRunner执行测试用例
- unittest框架执行测试用例之前,需先创建TextTestRunner实例,
- 再调用该实例的run()方法
# 创建TextTestRunner实例
runner = unittest.TextTestRunner()
# 使用run()方法运行测试套件(即运行测试套件中的所有用例)
runner.run(suite)
Unittest框架之测试套件:TestSuite的更多相关文章
- unittest如何制作测试套件Testsuite 按method,class ,module,按命令行执行unittest
cmd 执行unittest case : python -m unitest test.py test2.py python -m unittest testfile.testclass.tes ...
- unittest单元测试框架之测试套件(三)
1.测试套件(注意:测试用例先添加先执行,后添加后执行,由此组织与设定测试用例的执行顺序) addTests:添加多个测试用例 addTest:添加单个测试用例 import unittest fro ...
- Unittest 框架之测试固件-----(setUp与tearDown)你真的会用吗?
前言 做自动化测试中,需要管理大量的测试用例,如果不用框架管理用例,那会是一件很麻烦的事. 如果所示只写了一个用例,内容就是输入网易邮箱账号和密码 test fixture:测试固件 简单来说就是做一 ...
- soapUI 在多个测试套件 testsuite 里,多个testcase里传值如何实现
1.首先 要添加一个全局 自定义变量 Custom Properties 2.用transfer property 将取来的值 放入到变量 getToken 里 3.在另一个testc ...
- 『心善渊』Selenium3.0基础 — 28、unittest中测试套件的使用
目录 1.测试套件的作用 2.使用测试套件 (1)入门示例 (2)根据不同的条件加载测试用例(了解) (3)常用方式(推荐) 1.测试套件的作用 在我们实际工作,使用unittest框架会有两个问题: ...
- selenium + python自动化测试unittest框架学习(二)
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...
- Python接口测试之unittest框架(五)
Test-driven development(TDD)开发模式在今天已经不是什么新奇的事了,它的开发思维是在开发一个产品功能的时候,先 编写好该功能的测试代码,在编写开发比如,比如要写二个数相除的函 ...
- Unittest框架的从零到壹(二)
四大重要概念 在unittest文档中有四个重要的概念:Test Case.Test Suite.Test Runner和Test Fixture.只有理解了这几个概念,才能理解单元测试的基本特征. ...
- unittest_TestSuite测试套件(2)
在前面一章中演示了unittest如何执行一个简单的测试,但有两个问题: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢? 一个测试文 ...
随机推荐
- 自己挖的坑自己填--Mybatis mapper文件if标签中number类型及String类型的坑
1.现象描述 (1)使用 Mybatis 在进行数据更新时,大部分时候update语句都需要通过动态SQL进行拼接.在其中,if标签中经常会有 xxx !='' 这种判断,若 number 类型的字段 ...
- PriorityQueue 是线性结构吗?90%的人都搞错了!
文章首发于「陈树义」公众号及个人博客 shuyi.tech 其实这个问题的完整描述是:Java 中的 PriorityQueue 实现,其数据的逻辑结构是线性结构吗?其数据的物理结构又是什么? 估计很 ...
- 仿MSDN的帮助系统
作为软件开发人员,软件做好后,接下来就是编写文档.我自己也是做软件的,经常有用户询问软件的安装与使用, 我一直很喜欢微软的MSDN帮助系统,简介.大气,使用方便. 网上也找了很久,感觉一直没有合适的, ...
- Django 模板 render传参不转码
今天通过Django后端向前端页面传递一行js代码,却发现符号被转码了导致代码不能执行 Django代码 HTML代码 实际生成页面代码 我们可以看到实际代码中的引号被转义,导致代码不能执行, 解决方 ...
- 一本关于HTTP的恋爱日记
1991年 8月 我叫客户端,英文名字 client. 她叫服务端,英文名字 server. 这一年,我们出生了. 是的,我们都是90后. 我爱她,可是她却远在天边. 为了和她可以互诉衷肠,我同时发明 ...
- 手写无缝轮播banner
<div class="banner"> <ul class="clearfloat bannerul xin" id="xin&q ...
- Distributed | ZooKeeper
ZooKeeper与之前看的论文不太一样,它主要是描述了一个分布式协调服务,提供了wait-free的api,可以让用户自己设计要求更高的原语.通过Zab协议保证sever之间的一致性,同时让读请求在 ...
- OO第四单元总结暨OO课程总结
一.第四单元作业总结 本单元的主要任务是对 Uml 图元素进行管理和查询,测试一开始会输入一个静态图,之后会对图中相关内容进行查询. 第13,14次作业 第14次作业新增内容很少,故与第13次作业放在 ...
- 000 - 准备工作ADB wifi连接多台鸿蒙设备进行调试
首先将两台鸿蒙设备插入电脑的usb上 查看两台鸿蒙设备的deviceid C:\Users\Administrator>adb devices * daemon not running; sta ...
- Vue3 封装第三方组件(一)做一个合格的传声筒
各种UI库的功能都是非常强大的,尤其对于我这种不会 css 的人来说,就更是帮了大忙了. 只是嘛,如果再封装一下的话,那么用起来就会更方便了. 那么如何封装呢? 封装三要素 -- 属性.插槽.事件.方 ...