測試過程如下:
1、接口測試項目先向測試數據庫中插入測試數據(zhangsan的個人信息)
2、調用被測試系統接口(傳參username="zhangsan")
3、系統接口根據傳參(username="zhangsan")向測試數據庫中進行查詢並得到zhangsan的個人信息
4、將查詢結果組裝成一定格式的數據,並返回給被調用者
5、通過單元測試框架斷言接口返回數據(zhangsan的個人信息),並生成測試報告
為了使正式數據庫的數據不被污染,應使用獨立的測試數據庫。
舉例:接口測試
import requests #查詢發布會接口 url = "http://127.0.0.1:8000/api/get_event_list/" r = requests.get(url,params = {'eid':'1'}) result = r.json() print(result) assert result['status'] == 200 assert result['message'] == "success" assert result['data']['name'] == "xx 產品發布會" assert result['data']['address'] == "北京林匹克公園水立方" assert result['data']['start_time'] == "2016-10-15T18:00:00"
因為“發布會查詢接口” 是 GET 類型, 所以, 通過 requests 庫的 get()方法調用, 第一個參數為調用接口
的 URL 地址, params 設置接口的數, 參數以字典形式組織。
json()方法可以將接口返回的 json 格式的數據轉化為字典。
接下來就是通過 assert 語句對接字典中的數據進行斷言。分別斷言 status、 message 和 data 的相關數據等
舉例:接口自動化測試
使用 unittest 單元測試框架開發接口測試用例。
#-*-coding:utf-8-*- import unittest import requests __author__ = 'Administrator' class GetEventListTest(unittest.TestCase): '''查詢發布會接口測試''' def setUp(self): self.url = "http://127.0.0.1:8000/api/get_event_list/" def test_get_event_null(self): '''發布會 id 為空''' r = requests.get(self.url, params={'eid':''}) result = r.json() print(result) self.assertEqual(result['status'], 10021) self.assertEqual(result['message'], "parameter error") def test_get_event_success(self): '''發布會 id 為 1, 查詢成功''' r = requests.get(self.url, params={'eid':'1'}) result = r.json() print(result) self.assertEqual(result['status'],200) self.assertEqual(result['message'], "success") self.assertEqual(result['data']['name'], "xx 產品發布會") self.assertEqual(result['data']['address'], "北京林匹克公園水立方") self.assertEqual(result['data']['start_time'], "2016-10-15T18:00:00") if __name__ == '__main__': unittest.main()
import unittest from count import Calculator class CountTest(unittest.TestCase): def setUp(self): self.cal = Calculator(8, 4) def tearDown(self): pass def test_add(self): result = self.cal.add() self.assertEqual(result,12) def test_sub(self): result = self.cal.sub() self.assertEqual(result,4) def test_mul(self): result = self.cal.mul() self.assertEqual(result,32) def test_div(self): result = self.cal.div() self.assertEqual(result,2) if __name__ == "__main__": #unittest.main() # 構造測試集 suite = unittest.TestSuite() suite.addTest(CountTest("test_add")) suite.addTest(CountTest("test_sub")) suite.addTest(CountTest("test_mul")) suite.addTest(CountTest("test_div")) # 執行測試 runner = unittest.TextTestRunner() runner.run(suite)
單元測試用例。
首先, 通過 import 導入 unittest 單元測試框架。
創建 CountTest 類繼承 unittest.TestCase 類。
setUp()和 tearDown()在單元測試框架中比較特別, 它們分別在每一個測試用例的開始和結束執行。setUp()
方法用於測試用例執行前的初始化工作, 例如初始化變量、 生成數據庫測試數據、 打開瀏覽器等。 tearDown()
方法與 setUp()方法相呼應, 用於測試用例執行之后的善后工作, 例如清除數據庫測試數據、 關閉文件、 關閉
瀏覽器等。
unittest 要求測試方法必須以“test” 開頭。 例如, test_add、 test_sub 等。
接下來, 調用 unittest.TestSuite()類中的 addTest()方法向測試套件中添加測試用例。 簡單的可以將測試套
件理解成運行測試用例的集合。
通過 unittest.TextTestRunner()類中的 run()方法運行測試套件中的測試用例。
如果想默認運行當前測試文件下的所有測試用例, 可以直接使用 unittest.main()方法。 那么 main()方法在
查找測試用例時按照兩個規則。 首先, 該測試類必須繼承 unittest.TestCase 類; 其次, 該測試類下面的方法必
須以“test” 開頭。
接口自動化測試框架實現 :
關於接口自動化測試, unittest 已經幫我們做了大部分工作, 接下來只需要集成數據庫操作, 以及
HTMLTestRunner 測試報告生成擴展即可 .