介面測試之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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql鎖 實戰測試程式碼MySql
- 介面測試學習之 jsonJSON
- 介面測試學習之jsonJSON
- 介面自動化測試實戰之智慧場景如何攻破
- 學會程式碼不是測試的終點而是測試開發的起點
- DDT資料驅動效能測試(一)
- Laravel 單元測試實戰(3)- 編寫整合測試確保介面和資料庫程式碼正確Laravel資料庫
- python 程式碼實現查詢功能介面測試Python
- 測試平臺之介面測試
- Eolink Apikit「 零程式碼」快速發起 RPC 介面自動化測試APIRPC
- Java volatile 的測試(Java程式碼實戰-004)Java
- 實戰篇:如何做好SOAP介面效能測試?
- 軟體測試學習教程——LoadRunner實現介面測試
- 介面自動化測試之PHPUnit-框架程式碼編寫2PHP框架
- Laravel 單元測試實戰(2)- 編寫實際功能並讓程式碼測試透過Laravel
- Go 單元測試之mock介面測試GoMock
- 微服務測試之介面測試和契約測試微服務
- Django+Vue+Docker搭建介面測試平臺實戰DjangoVueDocker
- FastAPI專案實戰:"非同步"介面測試"平臺"ASTAPI非同步
- 不用寫程式碼,也能做好介面測試
- 基於Python的介面自動化-unittest測試框架和ddt資料驅動Python框架
- phpunit測試成功phpunit測試實踐程式碼PHP
- loadrunner12.6快速實戰之透過抓包來獲取app測試指令碼APP指令碼
- 乾貨丨Python介面測試自動化實戰及程式碼示例:含get、post等方法Python
- 測試開發之效能篇-JMeter介面測試JMeter
- 企業微信介面測試實戰、Swagger簡介Swagger
- OpenAI ChatGPT API介面免費測試程式碼分享OpenAIChatGPTAPI
- LevelDB 程式碼擼起來!
- 介面測試之抓包實戰解決 Android 高版本無法抓取 httpsAndroidHTTP
- 遊戲測試 Perfdog 實戰之減少 CPU 消耗遊戲
- 對比測試工具平臺讓財務測試飛起來
- 隨行付微服務測試之介面測試和契約測試微服務
- Eolink Apikit:HTTP 介面測試,零程式碼、快速上手APIHTTP
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- Jmeter效能測試實戰JMeter
- WEB安全測試實戰Web
- 小白學習大資料測試之hadoop hdfs和MapReduce小實戰大資料Hadoop
- 介面自動化測試系列之PHPUnit-GET請求介面測試方法PHP