利用unittest+ddt進行介面測試(一):簡單demo
阿新 • • 發佈:2019-01-02
一般進行介面測試時,每個介面的傳參都不止一種情況,一般會考慮正向、逆向等多種組合。所以在測試一個介面時通常會編寫多條case,而這些case除了傳參不同外,其實並沒什麼區別。
這個時候就可以利用ddt來管理測試資料,提高程式碼複用率。
先看一個簡單的demo
# coding: utf-8 # author: Archer import unittest import ddt import requests import HTMLTestRunner # 介面引數,用列表[]包裹起來,每組資料則是字典格式 test_data = [{ "clientCode": "韓", "topic": "測試介面", "content": "測試介面", "resrcType": "0", "assert": "200" # assert並不是介面需要的引數,是為了對返回結果進行斷言而加在這裡的預期結果 }, { "clientCode": "", "topic": "測試介面2", "content": "測試介面2", "resrcType": "0", "assert": "400" }, { "clientCode": "韓", "topic": "", "content": "測試介面2", "resrcType": "0", "assert": "400" }] @ddt.ddt class Test(unittest.TestCase): def setUp(self): self.url = 'http://192.168.X.XXX:7001/XXX/api/XXXise/info/XXX/save.v' @ddt.data(*test_data) def test_ddt(self, value): # 定義一個變數value來接收ddt.data中的資料 r = requests.post(self.url, value) print(r.json()) self.assertTrue(value['assert'] in r.text) # 利用引數組合中的assert引數進行斷言 if __name__ == '__main__': unittest.main()
可以看到,雖然只寫了一條用例,但是卻執行了3次,根據傳參不同,得到不同的結果,相當於3條用例。
我這裡只是用了ddt.data,ddt還有其他的裝飾方法,如:ddt.file_data、ddt.unpack
關於ddt的詳細介紹可以看看這篇部落格:https://www.cnblogs.com/miniren/p/7099187.html和https://blog.csdn.net/wushuai150831/article/details/78453549,寫的比較全面