paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
前面讲数据驱动的时候,用ddt可以解决多组数据传入,自动生成多个测试用例。本篇继续介绍另外一个参数化的框架paramunittest,也能实现一样的效果。
1.先pip 下载安装 paramunittest
pip install paramunittest
1.官方文档地址:https://pypi.python.org/pypi/ParamUnittest/
2.github源码下载地址:https://github.com/rik0/ParamUnittest
3.官方文档上给出了2个使用案例,以下两种方法都是可以的,小编倾向于第二种,更容易理解一些,这里注意了,在pycharm里面运行的时候,最后鼠标要放到if下方执行。
4.加上这个参数verbosity=2是为了显示用例执行详情
verbosity=2
接下来是使用逻辑。
先放例子,然后根据例子来讲解:
(1)第一种:以字典格式的枚举数据
上面是个非常简单的例子,就是学习得到枚举值的逻辑是什么,然后输出。
line 5:先使用paramunittest.parametrized()方法,将要进行参数化的数据汇总。-----> 获取到了所有需要的数据
line 19:此处必须定义setParameters 将汇总得到的数据进行参数化操作。--->将数据参数化,用变量来存储
这里括号种的user, pwd, result必须和字典中的key值一致。赋值逻辑如下:
这样的话,self.result变量就得到了字典中result里面的值(具体如何循环获取数据的,后面再说)。
line 25: 直接print出这些数据,看看会得到什么(切记,一点要把光标放在 line 40的 if 后面,具体为什么,我也不知道,我就知道不这么做无法执行)
可以看到,字典中的每一组数据循环的传入执行的参数化的变量中,然后再循环的执行用例,每一个轮次用到一组数据,一共得到10组数据。
上面的学习,就可以理解参数化的数据是以什么样的方式传入到用例里面的。
第一步:将测试数据汇总,按照一点的格式存放(这里是字典,后面介绍不用字典的方式)
第二部:将存放额数据参数化 (一定要使用setparameters方法)
第三步:执行用例即可,将已经参数化的数据按照变量来逐个使用
上面只是普通的输出,那么如何进行断言呢?
其实很简单,因为我们已经将原始数据参数化给了self.user, self.pwd, self.result ,这些变量就已经代表了字典中的value 值,下面举一个断言的例子。
line 27 : 自己自定义一个输入 (测试中,同样的可以用这种方式获取一个response中的值,原理相同)
line 29 : 使用self.assertEqual , 判断self.user 是否和 user (自己的输入值) 相等, 如果不等的话,打印出 msg。
执行完成了,是不是很简单。
下面再说一下不用字典格式的例子,原理都是一样的,只不过省去了原来字典中的 key 值,参数化的时候,还是循环的将 value值放入到自己参数化的变量里面。
如下:
其他的都一样,因为上面的元组的数据格式没有key 值,所以在 setParameters的时候,可以自定义变量。
eg: def setParameters(self, myUser, myPwd, myResult)
完结。
学完上面的就可以对 paramunittest 的参数化使用有个基本的认识。