python接口自動化(二十四)--unittest斷言——中(詳解)


簡介

  上一篇通過簡單的案例給小伙伴們介紹了一下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、參考代碼

 1 # coding=utf-8
 2 #1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 #2.注釋:包括記錄創建時間,創建人,項目名稱。
 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'] #獲取狀態碼
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']#獲取狀態碼
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、實際中的接口和這個也差不多,你可以增加沒有這個城市的等等測試用例,可根據實際需要增加多個測試用例全面的斷言。

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)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM