介面測試之DDT,純程式碼實戰,學起來
DDT,即資料驅動測試,簡單的理解為資料的改變從而驅動自動化測試的執行,最終引起測試結果的改變。使用外部資料來源實現對輸入輸出與期望值的引數化,避免在測試中使用硬編碼的資料。
一、安裝ddt模組
pip install ddt
ddt有四種模式:引入裝飾器@ddt;匯入資料@data;拆分資料@unpack;匯入外部資料@file_data
二、引數化實現的方式
1、讀取元組資料
#一定要和單元測試框架一起用 import unittest,os from ddt import ddt,data,unpack,file_data '''NO.1單組元素''' @ddt class Testwork(unittest.TestCase): @data(1,2,3) def test_01(self,value): #value用來接收data的資料 print(value) if __name__ == '__main__': unittest.main() 結果: =>1 2 3 '''NO.2多組未分解元素''' @ddt class Testwork(unittest.TestCase): @data((1,2,3),(4,5,6)) def test_01(self,value): print(value) if __name__ == '__main__': unittest.main() 結果: =>(1, 2, 3) (4, 5, 6) '''NO.3多組分解元素''' @ddt class Testwork(unittest.TestCase): @data((1,2,3),(4,5,6)) @unpack #拆分資料 def test_01(self,value1,value2,value3): #每組資料有3個值,所以設定3個形參 print(value) if __name__ == '__main__': unittest.main() 結果: =>1 2 3 4 5 6
2、讀取列表資料
import unittest,os from ddt import ddt,data,unpack,file_data '''NO.1多組元素未分解''' @ddt class Testwork(unittest.TestCase): @data([{'name':'lili','age':12},{'sex':'male','job':'teacher'}]) def test_01(self,a): print(a) if __name__ == '__main__': unittest.main() 結果: =>[{'name': 'lili', 'age': 12}, {'sex': 'male', 'job': 'teacher'}] ※上面結果可以看出:無法運用到requests資料請求中,所以不是很實用※ '''NO.2多組元素分解''' @ddt class Testwork(unittest.TestCase): @data([{'name':'lili','age':12},{'sex':'male','job':'teacher'}]) @unpack def test_01(self,a,b): print(a,b) if __name__ == '__main__': unittest.main() 結果: =>{'name': 'lili', 'age': 12} {'sex': 'male', 'job': 'teacher'} ※拆分後的執行結果,不帶有[ ],拆分是將列表中的2個字典拆分,所以有2個資料※
3、讀取字典資料
import unittest,os from ddt import ddt,data,unpack,file_data '''※字典的讀取比較特殊,因為在拆分的時候,形參和實參的key值要一致,否則就報錯※''' '''NO.1單組資料未分解''' @ddt class Testwork(unittest.TestCase): @data({'name':'lili','age':'16'},{'sex':'female','job':'nurser'}) def test_01(self,a): print(a) if __name__ == '__main__': unittest.main() 結果: =>{'name': 'lili', 'age': '16'} {'sex': 'female', 'job': 'nurser'} ※以上執行的結果資料,就可以用來作為requests的請求引數~!※ '''NO.2多資料拆分,重點來了''' @ddt class Testwork(unittest.TestCase): @data({'name':'lili','age':'16'},{'name':'female','age':'nurser'}) @unpack def test_01(self,name,age): print(name,age) if __name__ == '__main__': unittest.main() 結果: =>lili 16 female nurser ※重點來了:首先結果展示的資料是字典裡的value,沒有列印key的值;其次@data裡的資料key值和def方法裡的形參名稱一定要一致,否則,列印的時候,就會報莫名的引數錯誤。※
4、讀取json檔案資料
# data_json.json檔案 { "test_case1": { "key": "value1", "status_code": 200 }, "test_case2": { "key": "value2", "status_code": 200 }, "test_case3": { "key": "value3", "status_code": 200 } } # python讀取json檔案 @ddt class InterfaceTest(unittest.TestCase): def setUp(self): self.url = " def tearDown(self): print(self.result) @file_data("data_json.json") #如不在同一級目錄下需另做處理 def test_get_request(self, key, status_code): r = requests.get(self.url, params={"key": key}) self.result = r.json() self.assertEqual(r.status_code, status_code) if __name__ == '__main__': unittest.main()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2740575/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 介面測試學習之jsonJSON
- 介面測試學習之 jsonJSON
- Python + requests + unittest + ddt 進行介面自動化測試的框架Python框架
- Eolink Apikit「 零程式碼」快速發起 RPC 介面自動化測試APIRPC
- python 程式碼實現查詢功能介面測試Python
- 介面自動化測試實戰之智慧場景如何攻破
- 學會程式碼不是測試的終點而是測試開發的起點
- Java volatile 的測試(Java程式碼實戰-004)Java
- Laravel 單元測試實戰(3)- 編寫整合測試確保介面和資料庫程式碼正確Laravel資料庫
- DDT資料驅動效能測試(一)
- 測試平臺之介面測試
- loadrunner12.6快速實戰之透過抓包來獲取app測試指令碼APP指令碼
- 介面測試之postmanPostman
- 軟體測試學習教程——LoadRunner實現介面測試
- 實戰篇:如何做好SOAP介面效能測試?
- 乾貨丨Python介面測試自動化實戰及程式碼示例:含get、post等方法Python
- 基於Python的介面自動化-unittest測試框架和ddt資料驅動Python框架
- 不用寫程式碼,也能做好介面測試
- Laravel 單元測試實戰(2)- 編寫實際功能並讓程式碼測試透過Laravel
- 介面測試之抓包實戰解決 Android 高版本無法抓取 httpsAndroidHTTP
- 介面測試之fiddler(10.2)
- 介面測試之unittest框架框架
- LevelDB 程式碼擼起來!
- Go 單元測試之mock介面測試GoMock
- 企業微信介面測試實戰、Swagger簡介Swagger
- FastAPI專案實戰:"非同步"介面測試"平臺"ASTAPI非同步
- Django+Vue+Docker搭建介面測試平臺實戰DjangoVueDocker
- 微服務測試之介面測試和契約測試微服務
- Eolink Apikit:HTTP 介面測試,零程式碼、快速上手APIHTTP
- OpenAI ChatGPT API介面免費測試程式碼分享OpenAIChatGPTAPI
- 測試開發之效能篇-JMeter介面測試JMeter
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- 小白學習大資料測試之hadoop hdfs和MapReduce小實戰大資料Hadoop
- 實戰分析一個執行起來會卡死的Go程式Go
- 走進Java介面測試之測試報告ExtentReportJava測試報告
- Appium自動化測試之微信h5元素識別和程式碼實戰APPH5
- 實用測試技能分享:APP壓力穩定性測試之Monkey入門實戰APP
- Python物件導向之十二:程式碼測試Python物件