python接口自动化(二十四)--unittest断言——中(详解)
簡介
上一篇通過簡單的案例給小伙伴們介紹了一下unittest斷言,這篇我們將通過結合和圍繞實際的工作來進行unittest的斷言。這里以獲取城市天氣預報的接口為例,設計了 2 個用例,一個是查詢北京的天氣,一個是查詢
南京為例,你也可以查詢別的城市的天氣預報。
接口文檔
1、在實際工作中,開發(fā)人員都會給你接口文檔方便QA測試,和其他系統(tǒng)的開發(fā)人員對接。接口文檔如下:
天氣預報
獲取實時天氣
請求方式:POST
請求地址:https://www.apiopen.top/weatherApi
| city | string | 是 | 城市名稱 | 成都 |
?
返回示例:
{"code": 200,"msg": "成功!","data": {"yesterday": {"date": "14日星期五","high": "高溫 7℃","fx": "無持續(xù)風向","low": "低溫 4℃","fl": "","type": "陰"},"city": "成都","aqi": "89","forecast": [{"date": "15日星期六","high": "高溫 10℃","fengli": "","low": "低溫 2℃","fengxiang": "無持續(xù)風向","type": "多云"},{"date": "16日星期天","high": "高溫 15℃","fengli": "","low": "低溫 3℃","fengxiang": "無持續(xù)風向","type": "晴"},{"date": "17日星期一","high": "高溫 14℃","fengli": "","low": "低溫 5℃","fengxiang": "無持續(xù)風向","type": "晴"},{"date": "18日星期二","high": "高溫 11℃","fengli": "","low": "低溫 6℃","fengxiang": "無持續(xù)風向","type": "多云"},{"date": "19日星期三","high": "高溫 12℃","fengli": "","low": "低溫 6℃","fengxiang": "無持續(xù)風向","type": "多云"}],"ganmao": "晝夜溫差較大,較易發(fā)生感冒,請適當增減衣服。體質較弱的朋友請注意防護。","wendu": "9"} }2、如果沒有你可以自己通過fiddler抓包獲取參數(shù)和接口URL,以及請求方式 。
設計測試用例
1、針對以上接口,設計兩個城市接口測試用例
2、運行接口用例結果
3、參考代碼
1 # coding=utf-8 2 #1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行 3 4 #2.注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項目名稱。 5 ''' 6 Created on 2019-4-26 7 @author: 北京-宏哥 8 Project:學習和使用unittest框架編寫斷言-中篇 9 ''' 10 #3.導入requests和unittest模塊 11 import requests 12 import unittest 13 #4.編寫測試用例和斷言 14 class TestWeather(unittest.TestCase): 15 '''測試天氣預報接口''' # 此注釋將展示到測試報告的測試組類 16 def test_beijin_weather(self): 17 '''查詢北京天氣預報''' # 此注釋將展示到測試報告的用例標題 18 url = "https://www.apiopen.top/weatherApi" 19 20 par = { 21 "city": "北京", # 城市名 22 } 23 r = requests.post(url, params=par) 24 print(r.text) # 獲取返回的結果 25 result = r.json()['code'] #獲取狀態(tài)碼 26 print(result) 27 # 斷言 28 self.assertEqual(200, result) 29 self.assertIn('msg', r.text) 30 self.assertTrue('北京'in r.text) 31 def test_nanjin_weather(self): 32 '''查詢南京天氣預報''' # 此注釋將展示到測試報告的用例標題 33 url = "https://www.apiopen.top/weatherApi" 34 par = { 35 "city": "南京", # 城市名 36 } 37 r = requests.post(url, params=par) 38 print(r.text) # 獲取返回的結果 39 result = r.json()['code']#獲取狀態(tài)碼 40 print(result) 41 # 斷言 42 self.assertEqual(200, result) 43 self.assertIn('msg', r.text) 44 self.assertTrue('南京' in r.text) 45 46 if __name__ == "__main__": 47 unittest.main()小結
1、實際中的接口和這個也差不多,你可以增加沒有這個城市的等等測試用例,可根據(jù)實際需要增加多個測試用例全面的斷言。
2、實際開發(fā)或者測試工作中經(jīng)常用到json數(shù)據(jù),那么就會有這樣一個需求:在谷歌瀏覽器中訪問URL地址返回的json數(shù)據(jù)能否按照json格式展現(xiàn)出來。
比如,在谷歌瀏覽器中訪問:http://jsonview.com/example.json
展現(xiàn)效果如下:
那么安裝了JsonView擴展程序后的展現(xiàn)效果如下:
很明顯,后者的效果更好。實現(xiàn)步驟如下:
1、下載JsonView擴展程序壓縮包
下載地址:https://github.com/gildas-lormeau/JSONView-for-Chrome
點擊【Clone or download】——【Download Zip】
2、解壓這個壓縮包
3、打開谷歌瀏覽器的擴展程序界面
方式一:在谷歌瀏覽器地址欄中輸入:chrome://extensions/
方式二:
?
4、加載JsonView擴展程序
選中開發(fā)者模式,點擊【加載正在開發(fā)的擴展程序…】,選擇插件目錄(D:\JSONView-for-Chrome-master\WebContent)
?
點擊確定后,就安裝上了。安裝后界面如下:
?
安裝完成,重新加載 (Ctrl+R)。
轉載于:https://www.cnblogs.com/du-hong/p/10766311.html
總結
以上是生活随笔為你收集整理的python接口自动化(二十四)--unittest断言——中(详解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向 Photoshop 的英特尔® T
- 下一篇: Vue.js 学习笔记 第5章 内置指令