[介面自動化]使用python+unittest+request來完成一個小專案的介面自動化測試
阿新 • • 發佈:2020-08-12
一.介面專案
專案來源於我自學老師自建的一系列介面,名為LJtest。這一系列介面組建成了一個小型的系統,主要功能類似於朋友圈/QQ空間發動態之類的。
如圖,檢視版本號介面,獲取靈感,獲取靈感詳情這三個介面不需要登入。而使用者發表靈感,修改靈感和刪除靈感介面則需要登入後進行操作。剩餘兩個介面則是註冊和登入介面。
二.介面用例設計和測試
介面文件提供了8個介面,這裡我以其中兩個介面作為示例來講解如何進行這些介面的測試。
介面一:檢視版本號介面
介面文件如圖:
直接展示程式碼:
import unittest import requests import HTMLTestRunner headers={"Content-Type":"application/json"} class Test_showversion(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_1(self): url = 'http://192.144.148.91:2333/showversion' response = requests.get(url,headers = headers).json() self.assertEqual(response['status'], 200) if __name__ == '__main__': testunit = unittest.TestSuite() #初始化測試用例集合物件,構建測試套件 testunit.addTest(Test_showversion("test_1")) #把測試用例加入到測試用力集合中去,將用例加入到檢測套件中 filename = './' +'檢視版本號'+'result.html'#重構檔名 fp = open(filename,'wb')#定義測試報告存放路徑 runner = HTMLTestRunner.HTMLTestRunner(stream=fp)#定義測試報告 runner.run(testunit) fp.close()
程式碼邏輯:1.導包 2.定製請求頭 3.定義一個類整合unittest.TestCase 4.定義測試用例,url,請求方式,請求頭非常簡單明瞭。 5.斷言,介面文件中返回值裡'status'=200
,斷言我們判斷這個值是不是等於200就行了。最後生成一個非常簡易的測試報告。
OK,這個介面非常簡單。查詢要麼成功要麼失敗,這裡不需要傳入引數且介面已經被LJ老師更新好了無法設計更多測試用例。
介面二:登入介面
登入介面的介面文件如下:
為登入介面設計測試用例:8條用例只有第1條能夠登入成功,其他7條應該都會報錯。
原始碼:
import requests import unittest from ddt import ddt,data,unpack headers={"Content-Type":"application/json"} @ddt class Test_login(unittest.TestCase): def setUp(self): pass def tearDown(self): pass @data({"username":"8482592", "password":"a1234567"},{"username":"8482", "password":"a1234567"},{"username":"8482592123455", "password":"a1234567"} ,{"username":"84825921", "password":"a1234567"},{"username":"8482592", "password":"a123456"},{"username":"8482592", "password":"a1234567890123456"} ,{"username":"848259211", "password":"a1234567"},{"username":"8482592", "password":"a12345678"}) def test_1(self,usefinfo): url = 'http://192.144.148.91:2333/login' response = requests.post(url,headers = headers,json=usefinfo).json() self.assertEqual(response['msg'], '登入成功!') if __name__ == "__main__": unittest.main(verbosity=2)
跑一遍顯示的結果如下:
和我們的預期結果相符合,只有第1條用例師OK的,其他用例全部失敗(error4條,fail3條)
目前還沒有把ddt資料驅動和測試報告結合起來,下去研究下ddt測試用例的名稱怎麼修改,這樣就能產出測試報告了。