在我们开始之前,让我们弄清楚什么是数据驱动的。在百度百科中,数据驱动的解释是:黑盒测试,也叫功能测试,把测试对象看成一个黑盒。使用黑盒测试方法进行动态测试时,需要测试的是软件产品的功能,而不是软件产品的内部结构和处理。黑盒测试侧重于测试软件的功能需求,即黑盒测试使软件工程师能够推导出执行程序所有功能需求的输入条件。

这是什么意思?为什么我一点都不明白!!!我们来分析一下。

使用黑盒测试方法进行动态测试时,需要测试的是软件产品的功能,而不是软件产品的内部结构和处理——侧重于测试功能,不考虑内部处理

也就是说,黑盒测试使软件工程师能够导出执行程序所有功能需求的输入条件——在测试期间关注输入条件

在实际的自动化测试中,数据驱动通过数据变化驱动自动化测试的执行,最终导致测试结果的变化。简单来说就是区分测试数据和实际测试代码。

Unittest是大多数人在Python中接触到的第一个测试框架。但是unittest本身不支持数据驱动,需要ddt来实现。然后我们将使用unittest+ddt向您展示数据驱动程序。

滴滴涕是“数据驱动测试”的缩写。官方信息是:http://ddt.readthedocs.io/en/latest/.

以下是每个组件的简要介绍:

ddt.ddt:

装饰类,用作unittest的类装饰器。TestCase子类。

ddt.data:

方法装饰器已添加到unittest。测试用例。

ddt.file_data:

方法装饰器已添加到unittest。测试用例。

值应该是文件目录的路径。该文件应该包含JSON编码的数据,可以是列表或字典。

如果文件中有列表,每个列表的值将被用作测试用例参数,并显示为测试用例方法名称的后缀。

如果文件是字典,字典的关键字会显示为测试用例方法的后缀,字典的值会作为测试用例参数。

ddt.unpack:

在传递复杂数据结构时使用。例如,使用元组或列表,在添加解包后,ddt会自动将元组或列表映射到多个参数。

让我们用例子来看看每个组件。首先,我们使用数据传递简单的值来驱动数据。

简单的数据注入:

进口滴滴涕

导入unittest

@ddt.ddt

class TestCase:

def setUp:

打印

@ddt.data

def test_case_01:

print)

if __name__ == "__main__ ":

unittest.main

在操作过程中,发现有6组数据,总共执行了6次

在测试方法之后,ddt会添加一个后缀,ddt会尝试将测试数据转换成一个后缀,并将其附加到测试方法上,形成一个新的名称。

复杂数据注入:

如果我们试图使用一些复杂的数据,比如元组/列表/字典,我们需要调用解包来实现它。这里有一些例子

进口滴滴涕

导入unittest

@ddt.ddt

class TestCase:

def setUp:

打印

@ddt.unpack

@ddt.data

def test_case_01:

print

print

@ddt.unpack

@ddt.data、、)

def test_case_02:

print)

print)

@ddt.unpack

@ddt.data

def test_case_03:

总和=值1 +值2

self . asserteqal

if __name__ == "__main__ ":

unittest.main

还有一种比较流行的处理方法,不用解包就可以直接注入字典数据。

进口滴滴涕

导入unittest

Data =

@ddt.ddt

class TestCase:

def setUp:

打印

@ddt.data

def test_case_01:

print

print

if __name__ == "__main__ ":

unittest.main

文件数据注入:

有时,将测试数据直接写入Python文件不利于我们的数据管理。这时候可以借助文件注入数据。

创建yml文件:

- 1

- 2

- 3

- 4

创建一个json文件:

{

"正整数范围":{

“开始”:0,

:2、

“值”:1

},

"负_整数_范围":{

" start": -2,

“结束”:0,

"值":-1

},

"正数_实数_范围":{

“开始”:0.0,

“结束”:1.0,

:0.5

},

"负数_实数_范围":{

" start": -1.0,

“结束”:0.0,

“值”:-0.5

}

}

然后将yml和json文件注入测试用例

进口滴滴涕

导入unittest

@ddt.ddt

class TestCase:

def setUp:

打印

@ DDT . file _ data

def test_case_01:

print)

print)

print)

@ DDT . file _ data

def test_case_02:

print)

if __name__ == "__main__ ":

unittest.main

运行后的结果是:

这样,它为我们的数据驱动使用提供了多样性。

最后,希望本文能对大家有所帮助。

1.《ddt Python数据驱动DDT的应用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《ddt Python数据驱动DDT的应用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/fangchan/1676592.html