Python单元测试框架unittest之批量用例管理(discover)
前言
我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了。加载用例后,用unittest里面的TextTestRunner类的run方法去一次执行多个脚本的用例。
一、新建测试项目
1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一个测试工程的名称:Mytest,然后保存;

2.右键选中刚才新建的工程>New>Python Package>新建一个unitest的python包,注意是unitest,不是unittest

3.右键选中步骤2中创建的unitest包,创建一个case包
4.重复步骤3,在case包下面,依次创建baidu和wangyi包
5.分别在baidu和wangyi包下面创建2个测试用例脚本,testA,testB,testC,testD是我们写用例的脚本。
创建完后的层次结构如下图:

6.testA脚本创建完后,打开文件,写入用例,其它三个测试用例的内容类似

脚本内容为:
1 # coding:utf-8
2
3 import unittest
4
5 # print help(unitest)
6 class testA(unittest.TestCase):
7
8 def setUp(self):
9 print "testA------setUp"
10 pass
11
12 def tearDown(self):
13 print "testA------tearDown"
14 pass
15
16 def test_A001(self):
17 print ("test_A001")
18
19 def test_A002(self):
20 print ("test_A002")
7.在unitest下面创建一个脚本run_all_case.py,接下来用这个脚本去批量执行所有的用例。

二、discover加载测试用例
1.discover方法里面有三个参数:
-case_dir:这个是待执行用例的目录。
-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本。
-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。
2.discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里,这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。
3.运行结果如下:
1 C:\Python27\python.exe C:/Users/zhangxiaoding/PycharmProjects/Mytest/unitest/run_all_case.py
2 C:\Users\zhangxiaoding\PycharmProjects\Mytest\unitest\report
3 C:\Users\zhangxiaoding\PycharmProjects\Mytest\unitest\report
4 <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testA.testA testMethod=test_A001>, <case.baidu.testA.testA testMethod=test_A002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testB.testB testMethod=test_B001>, <case.baidu.testB.testB testMethod=test_B002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testC.testC testMethod=test_C001>, <case.wangyi.testC.testC testMethod=test_C002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testD.testD testMethod=test_D001>, <case.wangyi.testD.testD testMethod=test_D002>]>]>]>
5 ........
6 Time Elapsed: 0:00:00.039000
7
8 Process finished with exit code 0
其中discover加载到的所有测试用例如下:
1 <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testA.testA testMethod=test_A001>, <case.baidu.testA.testA testMethod=test_A002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testB.testB testMethod=test_B001>, <case.baidu.testB.testB testMethod=test_B002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testC.testC testMethod=test_C001>, <case.wangyi.testC.testC testMethod=test_C002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testD.testD testMethod=test_D001>, <case.wangyi.testD.testD testMethod=test_D002>]>]>]>
4.运行结果后会在unitest下创建一个report文件夹(如果没有该文件夹则创建,否则不创建),里面存放本次运行结束后的测试报告

5.打开测试报告,如下图

Python单元测试框架unittest之批量用例管理(discover)的更多相关文章
- Python单元测试框架unittest之单用例管理(一)
一.概述 本文介绍python的单元测试框架unittest,unittest原名为PyUnit,是由java的JUnit衍生而来,这是Python自带的标准模块unittest.unittest是基 ...
- Python单元测试框架unittest之单用例管理(二)
概述 利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块,上篇文章就是使用的这种方式: 一种是添加到testsuite集合中再加载 ...
- Python单元测试框架unittest之深入学习
前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...
- Python单元测试框架unittest使用方法讲解
这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容,需要的朋友可以参考下 概 ...
- Python单元测试框架unittest重要属性 与 用例编写思路
前言 本文为转载,原文地址作者列举python unittest这个测试框架的主要属性和 测试用例思路 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行, ...
- Python单元测试框架unittest
学习接口自动化测试时接触了unittest单元测试框架,学习时参照了虫师编写的<selenium2自动化测试实战>,个人觉得里面讲的例子还比较容易理解的. 一.基础 1.main()和框架 ...
- python单元测试框架-unittest(一)
简介 unittest单元测试框架不仅可以适用于单元测试,还可以使用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. ...
- python单元测试框架-unittest(四)之用例综合框架管理
简述为何如要框架? 前面测试用例与执行都是写在一个文件,当用例数量不断增加的时候,用例的执行与管理变得非常麻烦,因此需要对用例根据具体的功能模块来使用单独的模块来管理.就像一所学校要根据不同年级进行分 ...
- python单元测试框架-unittest(三)之用例执行顺序
执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...
随机推荐
- Windows登录服务器CLI运行脚本出现 syntax error: unexpected end of file 错误的解决
0.前言 通常我们在编辑 Linux 服务器上的文件时,直接在 Linux 环境比较麻烦(当然熟练使用 VIM 的程序员除外哈哈),有时我们会使用 Windows 将文件编辑好再上传到服务器端,我用的 ...
- Step By Step(Lua函数)
Step By Step(Lua函数) 一.函数: 在Lua中函数的调用方式和C语言基本相同,如:print("Hello World")和a = add(x, y).唯一的 ...
- 一篇文章弄懂 Java 反射的使用
说到Java反射,必须先把 Java 的字节码搞明白了,也就是 Class , 大 Class 在之前的文章中,我们知道了Java的大Class就是类的字节码,就是一个普通的类,里面保存的是类的信息, ...
- IOS小组件(8):App与Widget数据共享
引言 Widget是一个迷你版的App,IOS有沙盒机制,不同App之间无法直接共享数据.组件和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数 ...
- mybatis中必须使用@param注解的四种情况
一.方法有多个参数 例如: 接口方法: @Mapper public interface UserMapper { Integer insert(@Param("username" ...
- RabbitMQ由浅入深入门全总结(一)
写在最前面 距离上一次发文章已经很久了,其实这段时间一直也没有停笔,只不过在忙着找工作还有学校结课的事情,重新弄了一下博客,后面也会陆陆续续会把文章最近更新出来~ 这篇文章有点长,就分了两篇Q PS: ...
- Redis与DB的数据一致性解决方案(史上最全)
文章很长,而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三 ...
- noip2006 总结
T1 能量项链 原题 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子 ...
- WEB 三维引擎在高精地图数据生产的探索和实践
1. 前言 高精地图(High Definition Map)作为自动驾驶安全性不可或缺的一部分,能有效强化自动驾驶的感知能力和决策能力,提升自动驾驶的等级.对于自动驾驶来说,高精地图主要是给机器用的 ...
- ES7扩展
前一段时间小编一直在更新javascript es6版本的部分新语法和新特性,鉴于现在js一直在更新,接下来小编将和大家一起进步,一块探究js的新特性.今天小编就和大家一起来看看es7更新的语法和新特 ...