python 数据驱动接口自动化框架_python接口自动化测试 - 数据驱动DDT模块的简单使用...
DDT簡(jiǎn)單介紹
名稱:Data-Driven Tests,數(shù)據(jù)驅(qū)動(dòng)測(cè)試
作用:由外部數(shù)據(jù)集合來(lái)驅(qū)動(dòng)測(cè)試用例的執(zhí)行
核心的思想:數(shù)據(jù)和測(cè)試代碼分離
應(yīng)用場(chǎng)景:一組外部數(shù)據(jù)來(lái)執(zhí)行相同的操作
優(yōu)點(diǎn):當(dāng)測(cè)試數(shù)據(jù)發(fā)生大量變化的情況下,測(cè)試代碼可以保持不變
實(shí)際項(xiàng)目:excel存儲(chǔ)測(cè)試數(shù)據(jù),ddt讀取測(cè)試數(shù)據(jù)到單元測(cè)試框架(測(cè)試用例中),輸出到html報(bào)告
什么是數(shù)據(jù)驅(qū)動(dòng)
就是數(shù)據(jù)的改變從而驅(qū)動(dòng)自動(dòng)化測(cè)試的執(zhí)行,最終引起測(cè)試結(jié)果的改變。說(shuō)的直白些,就是參數(shù)化的應(yīng)用
DDT基礎(chǔ)使用(一):傳遞基礎(chǔ)數(shù)據(jù)類型
#導(dǎo)入ddt庫(kù)下所有內(nèi)容
from ddt import *
#在測(cè)試類前必須首先聲明使用 ddt
@ddtclassimoocTest(unittest.TestCase):#int
@data(1, 2, 3, 4)deftest_int(self, i):print("test_int:", i)#str
@data("1", "2", "3")deftest_str(self, str):print("test_str:", str)
測(cè)試結(jié)果
test_int: 1test_int:2test_int:3test_int:4test_str:1test_str:2test_str:3
包含知識(shí)點(diǎn)
想使用DDT首先要在單元測(cè)試類上面加上?@ddt
DDT基礎(chǔ)使用(二):傳遞一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)
from ddt import *
#在測(cè)試類前必須首先聲明使用 ddt
@ddtclassimoocTest(unittest.TestCase):
tuples= ((1, 2, 3), (1, 2, 3))
lists= [[1, 2, 3], [1, 2, 3]]#元組
@data((1, 2, 3), (1, 2, 3))deftest_tuple(self, n):print("test_tuple", n)#列表
@data([1, 2, 3], [1, 2, 3])
@unpackdeftest_list(self, n1, n2, n3):print("test_list", n1, n2, n3)#元組2
@data(*tuples)deftest_tuples(self, n):print("test_tuples", n)#列表2
@data(*lists)
@unpackdeftest_lists(self, n1, n2, n3):print("test_lists", n1, n2, n3)#字典
@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})
@unpackdeftest_dict(self, value1, value2):print("test_dict", value1, value2)
測(cè)試結(jié)果
test_dict 1 2test_dict1 2test_list1 2 3test_list1 2 3test_lists1 2 3test_lists1 2 3test_tuple (1, 2, 3)
test_tuple (1, 2, 3)
test_tuples (1, 2, 3)
test_tuples (1, 2, 3)
包含知識(shí)點(diǎn)
@unpack?:當(dāng)傳遞的是復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時(shí)使用。比如使用元組或者列表,添加?@unpack?之后,?ddt?會(huì)自動(dòng)把元組或者列表對(duì)應(yīng)到多個(gè)參數(shù)上。字典也可以這樣處理
當(dāng)沒(méi)有加unpack時(shí),test_case方法的參數(shù)只能填一個(gè);如元組的例子
當(dāng)你加了unpack時(shí),傳遞的數(shù)據(jù)量需要一致;如列表例子中,每個(gè)列表我都固定傳了三個(gè)數(shù)據(jù),當(dāng)你多傳或少傳時(shí)會(huì)報(bào)錯(cuò),而test_case方法的參數(shù)也要寫三個(gè),需要匹配上
當(dāng)傳的數(shù)據(jù)是字典類型時(shí),要注意每個(gè)字典的key都要一致,test_case的參數(shù)的命名也要一致;如字典的例子,兩個(gè)字典的key都是value1和value2,而方法的參數(shù)也是
當(dāng)傳的數(shù)據(jù)是通過(guò)變量的方式,如元組2、列表2,變量前需要加上*
DDT基礎(chǔ)使用(三):傳遞json文件
json文件
{"first": [
{"isRememberMe": "True","password": "111111","username": "root"},"200"],"second": ["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}","406"],"third": [1,2],"four": "123123"}
單元測(cè)試類
from ddt import *
#在測(cè)試類前必須首先聲明使用 ddt
@ddtclassimoocTest(unittest.TestCase):
@file_data('F:/test/config/testddt.json')deftest_json(self, data):print(data)
測(cè)試結(jié)果
[{'isRememberMe': 'True', 'password': '111111', 'username': 'root'}, '200']
["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}", '406']
[1, 2, 3, 4]123123
DDT基礎(chǔ)使用(四):傳遞Yaml文件
yaml文件
unsorted_list:- 10
- 15
- 12sorted_list: [15, 12, 50 ]
單元測(cè)試類
from ddt import *
#在測(cè)試類前必須首先聲明使用 ddt
@ddtclassimoocTest(unittest.TestCase):
@file_data('F:/test/config/testddt.yaml')deftest4(self, data):print("yaml", data)
測(cè)試結(jié)果
yaml [10, 15, 12]
yaml [15, 12, 50]
文章來(lái)源: www.cnblogs.com,作者:小菠蘿測(cè)試筆記,版權(quán)歸原作者所有,如需轉(zhuǎn)載,請(qǐng)聯(lián)系作者。
原文鏈接:https://www.cnblogs.com/poloyy/p/12274265.html
總結(jié)
以上是生活随笔為你收集整理的python 数据驱动接口自动化框架_python接口自动化测试 - 数据驱动DDT模块的简单使用...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 李国庆称当当网销量被甩好几条街:全因自己
- 下一篇: 中兴通讯联手东软睿驰:共同打造新一代车用