我们在使用Python的unittest做自动化或者单元测试时,有时需要一个测试用例根据不同的输入、输出组合而执行多次,但是,unittest中一个用例只能有一组参数组合执行,如果采用循环的方式,在生成的测试报告中也只会有一个测试用例的统计,单实际上我们需要一组参数就统计为一个测试用例,又或者将用例复制N份(这种方式谁然可以满足需求,单实际上维护太麻烦,如果有一个改动,需要复制N份),那么我们应该采用什么样的办法来实现我们的需求呢?经过查找资料和百度,我们可以采用Python的setattr函数在运行时产生test_开头的测试用例方法,脚本如下:

import unittest
from test import test_support
class MyTestCase(unittest.TestCase):
def setUp(self):
pass def clear(self):
pass def getTest(self, arg1, arg2):#定义的函数,最终生成的测试用例的执行方法
pass @staticmethod
def getTestFunc(arg1, arg2):
def func(self):
self.getTest(arg1, arg2)
return func def __generateTestCases():
arglists = [('arg11', 'arg12'), ('arg21', 'arg22'), ('arg31', 'arg32')]
for args in arglists:
setattr(MyTestCase, 'test_func_%s_%s'%(args[0], args[1]),MyTestCase.getTestFunc(*args))#通过setattr自动为TestCase类添加成员方法,方法以“test_func_”开头
__generateTestCases() if __name__ =='__main__': unittest.main()

到此,我们完成了所想要的,在此基础上可以增加参数化等,来实现自动化测试的要求。

Python中unittest采用不同的参数组合产生独立的test case的更多相关文章

  1. Python 中 unittest 单元测试框架中需要知识点

    现在正在使用 unittest 框架,我们来记录下这个框架的知识点: unittest 框架:我们在写接口用例的时候,会继承 unittest 当中的 TestCase 的类和方法,私有方法除外,来识 ...

  2. python中使用list作为默认参数且调用时不给其赋值的问题

    最近在写代码时发现一个有趣的地方,当python中的函数使用list作为默认参数且调用时不给其赋值时,无法通过在函数中将其赋值为[]来达到清空此默认参数的目的.按照道理来说,函数f1中的list为局部 ...

  3. python 中为什么不需要重载 参数*arg和**args

    函数重载主要是为了解决两个问题. (1)可变参数类型. (2) 可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两 ...

  4. Python中方法的缺省参数问题分析

    引言: 在Python中可以缺省给方法制定缺省值,但是这个缺省值在某些情况下确是和我们预期不太一致的-... 这个诡异的问题,曾经困然了我几天时间,才最终定位出来-.. 测试代码 from datet ...

  5. 如何使用不同参数组合生成独立的TestCase函数(Python)

    在使用selenium2 Python做自动化测试的时候遇到个问题,写一个testcase 生成报告后,会有一个case的执行状态记录.这样我们写一个登录功能的自动化用例,只写一个case显然是不行的 ...

  6. python中sort()方法的cmp参数

    <python基础编程>里有讲到一段高级排序: “如果希望元素能按照特定的方式进行排序(而不是sort函数默认的方式,即根据python的默认排序规则按升序排列元素,第5章内对此进行讲解) ...

  7. Python中的函数及函数参数的使用

    函数:一个工具,随调随用 降级代码冗余 增加代码的复用性,提高开发效率,为了不成为cv战士 提高程序扩展性 函数有两个阶段:定义阶段,调用阶段. 定义时:只检查函数体内代码语法,不执行函数体内代码. ...

  8. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  9. Python学习-33.Python中glob模块的一些参数

    glob模块中有一个叫glob的方法可以获取某个目录下的文件. import glob temp=glob.glob("E:\\Temp\\*.txt") print(temp) ...

随机推荐

  1. ModelSim仿真入门

    ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...

  2. 『C # 开发』VS 2008 修改默认生成代码模版

    作为Coder,或许会因为每次写代码前要把版权信息Ctrl+C/V上去而蛋疼   ╮(╯▽╰)╭ 可作为Code Copyer,又何尝不蛋疼呢,怎么会容忍作业上署上别人的姓名,学号,XXX 还是要先S ...

  3. spark Association failed with [akka.tcp:sparkMaster@ip:7077]

    今搭建spark集群, conf/spark-env.sh 配制如下 export SPARK_MASTER_IP=masterexport SPARK_MASTER_PORT=7077export ...

  4. Linux学习——卸载Ubuntu,安装CentOS,第一次使用命令

    最近,看了相关的资料,发现Ubuntu不是很利于学习Linux操作系统,而CentOS比较有利于学习Linux操作系统,就卸载了. 当然,对于菜鸟,自然是很没有主见. 卸载Ubuntu感觉很奇怪,下来 ...

  5. mono环境变量

    mono环境变量 2013-05-11 01:14:33|  分类: mono|举报|字号 订阅     下载LOFTER我的照片书  |     Name mono - Mono's ECMA-CL ...

  6. 用Setup系列函数完成驱动卸载安装[驱动安装卸载程序]

    // InstallWDFDriver.cpp : Defines the entry point for the console application. // #include "std ...

  7. APP纯黑盒测试---某些可以试试的操作

    一.多次快速点击一处功能入口: 该测试方法可以在某些应用中打开俩次目标界面,举一些具体一点的例子: 1.比如现在很多APP需要登陆,如果打开了俩次登录页面,就容易造成登录成功后应用跳转界面又是登录界面 ...

  8. A - Network of Schools - poj 1236(求连通分量)

    题意:学校有一些单向网络,现在需要传一些文件,1,求最少需要向几个学校分发文件才能让每个学校都收到,2,需要添加几条网络才能在任意一个学校分发都可以传遍所有学校. 分析:首先应该求出来连通分量,进行缩 ...

  9. socket编程2

    package tcp; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOExceptio ...

  10. Android 属性动画(一)

    1.概述 Android提供了几种动画类型:View Animation .Drawable Animation .Property Animation .View Animation相当简单,不过只 ...