簡介
上一篇通過簡單的案例給小夥伴們介紹了一下unittest斷言,這篇我們將通過結合和圍繞實際的工作來進行unittest的斷言。這裡以獲取城市天氣預報的介面為例,設計了 2 個用例,一個是查詢北京的天氣,一個是查詢
南京為例,你也可以查詢別的城市的天氣預報。
介面文件
1、在實際工作中,開發人員都會給你介面文件方便QA測試,和其他系統的開發人員對接。介面文件如下:
天氣預報
獲取實時天氣
請求方式:POST
請求地址:https://www.apiopen.top/weatherApi
Query引數名 | 型別 | 必需 | 描述 | 示例 e.g. |
---|---|---|---|---|
city | string | 是 | 城市名稱 | 成都 |
返回示例:
{
"code": 200,
"msg": "成功!",
"data": {
"yesterday": {
"date": "14日星期五",
"high": "高溫 7℃",
"fx": "無持續風向",
"low": "低溫 4℃",
"fl": "",
"type": "陰"
},
"city": "成都",
"aqi": "89",
"forecast": [
{
"date": "15日星期六",
"high": "高溫 10℃",
"fengli": "",
"low": "低溫 2℃",
"fengxiang": "無持續風向",
"type": "多雲"
},
{
"date": "16日星期天",
"high": "高溫 15℃",
"fengli": "",
"low": "低溫 3℃",
"fengxiang": "無持續風向",
"type": "晴"
},
{
"date": "17日星期一",
"high": "高溫 14℃",
"fengli": "",
"low": "低溫 5℃",
"fengxiang": "無持續風向",
"type": "晴"
},
{
"date": "18日星期二",
"high": "高溫 11℃",
"fengli": "",
"low": "低溫 6℃",
"fengxiang": "無持續風向",
"type": "多雲"
},
{
"date": "19日星期三",
"high": "高溫 12℃",
"fengli": "",
"low": "低溫 6℃",
"fengxiang": "無持續風向",
"type": "多雲"
}
],
"ganmao": "晝夜溫差較大,較易發生感冒,請適當增減衣服。體質較弱的朋友請注意防護。",
"wendu": "9"
}
}
2、如果沒有你可以自己通過fiddler抓包獲取引數和介面URL,以及請求方式 。
設計測試用例
1、針對以上介面,設計兩個城市介面測試用例
2、執行介面用例結果
3、參考程式碼
# coding=utf-
#.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 #.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on --
@author: 北京-巨集哥
Project:學習和使用unittest框架編寫斷言-中篇
'''
#.匯入requests和unittest模組
import requests
import unittest
#.編寫測試用例和斷言
class TestWeather(unittest.TestCase):
'''測試天氣預報介面''' # 此註釋將展示到測試報告的測試組類
def test_beijin_weather(self):
'''查詢北京天氣預報''' # 此註釋將展示到測試報告的用例標題
url = "https://www.apiopen.top/weatherApi" par = {
"city": "北京", # 城市名
}
r = requests.post(url, params=par)
print(r.text) # 獲取返回的結果
result = r.json()['code'] #獲取狀態碼
print(result)
# 斷言
self.assertEqual(, result)
self.assertIn('msg', r.text)
self.assertTrue('北京'in r.text)
def test_nanjin_weather(self):
'''查詢南京天氣預報''' # 此註釋將展示到測試報告的用例標題
url = "https://www.apiopen.top/weatherApi"
par = {
"city": "南京", # 城市名
}
r = requests.post(url, params=par)
print(r.text) # 獲取返回的結果
result = r.json()['code']#獲取狀態碼
print(result)
# 斷言
self.assertEqual(, result)
self.assertIn('msg', r.text)
self.assertTrue('南京' in r.text) if __name__ == "__main__":
unittest.main()
小結
1、實際中的介面和這個也差不多,你可以增加沒有這個城市的等等測試用例,可根據實際需要增加多個測試用例全面的斷言。
2、實際開發或者測試工作中經常用到json資料,那麼就會有這樣一個需求:在谷歌瀏覽器中訪問URL地址返回的json資料能否按照json格式展現出來。
比如,在谷歌瀏覽器中訪問:http://jsonview.com/example.json
展現效果如下:
那麼安裝了JsonView擴充套件程式後的展現效果如下:
很明顯,後者的效果更好。實現步驟如下:
1、下載JsonView擴充套件程式壓縮包
下載地址:https://github.com/gildas-lormeau/JSONView-for-Chrome
點選【Clone or download】——【Download Zip】
2、解壓這個壓縮包
3、開啟谷歌瀏覽器的擴充套件程式介面
方式一:在谷歌瀏覽器位址列中輸入:chrome://extensions/
方式二:
4、載入JsonView擴充套件程式
選中開發者模式,點選【載入正在開發的擴充套件程式…】,選擇外掛目錄(D:\JSONView-for-Chrome-master\WebContent)
點選確定後,就安裝上了。安裝後介面如下:
安裝完成,重新載入 (Ctrl+R)。