前言
当我们需要使用多个数据去对一个功能进行测试的时候, 如果手动编写多个测试用例的方式来实现的话, 那就完全体现不出通过代码来执行测试所具备的那种优势了, 在这个时间点, 参数化这个功能就会派上用场了, 所谓参数化的意思, 就是把测试过程中涉及到的数据从业务逻辑中单独提取出来, 然后通过传递不同的参数值给程序, 让参数去驱动测试用例一遍又一遍地运行, 这其实也就是大家所说的那个数据驱动的思想概念。
这里边儿, 我们就是要跟大家来讲一讲那个参数化还有数据驱动这俩个东西是咋回事。
参数化方式
在中, 我们使用了ddt这个库, 配合它来实现数据驱动。但是在当前的方案里面, 并不需要额外的库, 只通过.mark.()这一个方法就可以实现参数化功能了。这个方法里面的第一个参数是关于逗号分割的字符串列表的,第二个参数才是关于一个值列表的。
存在三种传递参数的方法, 具体情况如下:
单个传参
以下所示的是相关的示例代码部分。
def add(a,b):
a+b
class :
@点mark点a, 这里。
1,2,3,4,5
这个方法是定义自我a的时候用的。
add(a,1)==a+1
最终的执行结果呈现出如下状态。
============================= test =============================
... 5 items
这是一个扩展名为.py文件。
.py::::
.py::::
.py::::
.py::::
============================== 5 in 0.04s ==============================
需要注意一下的是, 名为 @.mark.() 的这种装饰器在设计上接收了两个参数, 具体来看的话, 第一个参数的形式是被确定为字符串的, 它的主要作用是用来对作为测试目标的那个函数所对应的参数进行标识工作, 而第二个参数则是通过列表或者是元组这样的数据结构来承载并传递实际的测试数据内容。
多个传参
示例代码如下:
def add(a,b):
a+b
class :
对带有标记的字符串进行标注, 所使用的字符串内容是a,b,c。
这里有一个定义方法的代码片段, 它包含参数a
add(a,b)==c
运行结果如下:
============================= test =============================
... 4 items
.py::::
.py::::
\.py:19 (.)
7 != 5
:5
:7
self等于, a等于3, b等于4。
c = 5
@.mark.('a,b,c',)
def (self,a,b,c):
> add(a,b)==c
E 7 == 5
E等于七, 而七等于将三和四相加之后所得到的那个结果。
.py:22:
.py::::
.py::::
========================= 1 , 3 in 0.06s =========================
这里有一点需要留意, 当存在多个参数的情况时, 各个参数相互之间必须采用逗号的方式进行分隔, 同时参数的具体名称以及整体的个数也要做到完全一致的对应。
总结
参数化测试是中一个特别强大的功能性东西。这个东西可以帮助把开发者去更为高效率的编写测试用这个例子的过程。它能够提高代码覆盖这个率的水平, 并且能够让测这个试代码变简单很多。
在后面的时候我们还打算继续介绍。我们会使用像yaml这样的文件形式去做更高级别的参数化和数据驱动测试这么回事。希望咱们这一篇文本能够给各位带来一些实际的帮衬作用在其中。