深圳建網(wǎng)站好的公司好用的視頻播放器app
目錄:導(dǎo)讀
- 前言
- 一、Python編程入門到精通
- 二、接口自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
- 三、Web自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
- 四、App自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
- 五、一線大廠簡(jiǎn)歷
- 六、測(cè)試開發(fā)DevOps體系
- 七、常用自動(dòng)化測(cè)試工具
- 八、JMeter性能測(cè)試
- 九、總結(jié)(尾部小驚喜)
前言
DDT簡(jiǎn)介
名稱:Data-Driven Tests,數(shù)據(jù)驅(qū)動(dòng)測(cè)試
作用:由外部數(shù)據(jù)集合來驅(qū)動(dòng)測(cè)試用例的執(zhí)行
核心的思想:數(shù)據(jù)和測(cè)試代碼分離
應(yīng)用場(chǎng)景:一組外部數(shù)據(jù)來執(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é)果的改變。說的直白些,就是參數(shù)化的應(yīng)用
1、DDT使用-傳遞基礎(chǔ)數(shù)據(jù)類型
# 導(dǎo)入ddt庫下所有內(nèi)容
from ddt import *# 在測(cè)試類前必須首先聲明使用 ddt
@ddt
class imoocTest(unittest.TestCase):# int@data(1, 2, 3, 4)def test_int(self, i):print("test_int:", i)# str@data("1", "2", "3")def test_str(self, str):print("test_str:", str)
測(cè)試結(jié)果
test_int: 1
test_int: 2
test_int: 3
test_int: 4
test_str: 1
test_str: 2
test_str: 3
想使用DDT首先要在單元測(cè)試類上面加上 @ddt
2、DDT使用-傳遞一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)
from ddt import *# 在測(cè)試類前必須首先聲明使用 ddt
@ddt
class imoocTest(unittest.TestCase):tuples = ((1, 2, 3), (1, 2, 3))lists = [[1, 2, 3], [1, 2, 3]]# 元組@data((1, 2, 3), (1, 2, 3))def test_tuple(self, n):print("test_tuple", n)# 列表@data([1, 2, 3], [1, 2, 3])@unpackdef test_list(self, n1, n2, n3):print("test_list", n1, n2, n3)# 元組2@data(*tuples)def test_tuples(self, n):print("test_tuples", n)# 列表2@data(*lists)@unpackdef test_lists(self, n1, n2, n3):print("test_lists", n1, n2, n3)# 字典@data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})@unpackdef test_dict(self, value1, value2):print("test_dict", value1, value2)
測(cè)試結(jié)果
test_dict 1 2
test_dict 1 2
test_list 1 2 3
test_list 1 2 3
test_lists 1 2 3
test_lists 1 2 3
test_tuple (1, 2, 3)
test_tuple (1, 2, 3)
test_tuples (1, 2, 3)
test_tuples (1, 2, 3)
注意:
@unpack :當(dāng)傳遞的是復(fù)雜的數(shù)據(jù)結(jié)構(gòu)時(shí)使用。比如使用元組或者列表,添加 @unpack 之后, ddt 會(huì)自動(dòng)把元組或者列表對(duì)應(yīng)到多個(gè)參數(shù)上。字典也可以這樣處理
當(dāng)沒有加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ù)是通過變量的方式,如元組2、列表2,變量前需要加上*
3、DDT使用-傳遞 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
@ddt
class imoocTest(unittest.TestCase):@file_data('F:/test/config/testddt.json')def test_json(self, data):print(data)
測(cè)試結(jié)果
[{'isRememberMe': 'True', 'password': '111111', 'username': 'root'}, '200']
["{'isRememberMe': True, 'password': '1111111', 'username': 'root'}", '406']
[1, 2]
123123
4、DDT使用-傳遞Yaml文件
yaml文件
unsorted_list:- 10- 15- 12sorted_list: [ 15, 12, 50 ]
單元測(cè)試類
from ddt import *# 在測(cè)試類前必須首先聲明使用 ddt
@ddt
class imoocTest(unittest.TestCase):@file_data('F:/test/config/testddt.yaml')def test4(self, data):print("yaml", data)
測(cè)試結(jié)果
yaml [10, 15, 12]
yaml [15, 12, 50]
下面是我整理的2023年最全的軟件測(cè)試工程師學(xué)習(xí)知識(shí)架構(gòu)體系圖 |
一、Python編程入門到精通
二、接口自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
三、Web自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
四、App自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
五、一線大廠簡(jiǎn)歷
六、測(cè)試開發(fā)DevOps體系
七、常用自動(dòng)化測(cè)試工具
八、JMeter性能測(cè)試
九、總結(jié)(尾部小驚喜)
每一次的努力都不會(huì)白費(fèi),即使結(jié)果不是你想要的,也為你積累了經(jīng)驗(yàn)和成長。所以,不要害怕失敗,不要停止前進(jìn)。只有持續(xù)奮斗,你才能不斷超越自己,迎接更美好的未來!
只有不斷努力,才能追逐自己的夢(mèng)想;只有勇敢面對(duì)困難,才能站在人生巔峰;只有拼盡全力,才能收獲輝煌的人生。所以,不要停下前進(jìn)的步伐,一定要堅(jiān)持奮斗,讓未來更加美好!
生命中最大的挑戰(zhàn)不是遇到困難,而是如何克服自己的惰性和恐懼去迎接挑戰(zhàn)。只要你有決心和毅力,任何事情都可以變得可能。相信自己,堅(jiān)定前行,你會(huì)看到成功的曙光。