第九篇:【自動化測試框架】| 抽取器

第九篇:【自動化測試框架】| 抽取器

來自專欄軟體測試精選

接下來我們為了抽取響應結果,用JMESPath封裝Extractor,在utils中添加extractor.py

對介面測試來說,很多時候,我們的用例不是一次請求就OK了的,而是多個請求複合的,我們第二個請求可能會用到第一個請求返回值中的數據,這就要我們再次進行封裝,做一個抽取器,從結果中抽取部分信息。

這裡我們會用到JMESPath庫,這是一個讓我們通過類似於xpath或點分法來定位json中的節點的庫

別忘了我們先在ReadMe.md中添加上依賴的庫。

我們在utils中創建extractor.py文件,實現對響應中數據的抽取

"""抽取器,從響應結果中抽取部分數據"""import jsonimport jmespathclass JMESPathExtractor(object): """ 用JMESPath實現的抽取器,對於json格式數據實現簡單方式的抽取。 """ def extract(self, query=None, body=None): try: return jmespath.search(query, json.loads(body)) except Exception as e: raise ValueError("Invalid query: " + query + " : " + str(e))if __name__ == __main__: from utils.client import HTTPClient res = HTTPClient(url=http://wthrcdn.etouch.cn/weather_mini?citykey=101010100).send() print(res.text) # {"data": { # "yesterday": {"date": "17日星期四", "high": "高溫 31℃", "fx": "東南風", "low": "低溫 22℃", "fl": "<![CDATA[<3級]]>", # "type": "多雲"}, # "city": "北京", # "aqi": "91", # "forecast": [ # {"date": "18日星期五", "high": "高溫 28℃", "fengli": "<![CDATA[<3級]]>", "low": "低溫 22℃", "fengxiang": "東北風", # "type": "多雲"}, # {"date": "19日星期六", "high": "高溫 29℃", "fengli": "<![CDATA[<3級]]>", "low": "低溫 22℃", "fengxiang": "東風", # "type": "雷陣雨"}, # {"date": "20日星期天", "high": "高溫 29℃", "fengli": "<![CDATA[<3級]]>", "low": "低溫 23℃", "fengxiang": "東南風", # "type": "陰"}, # {"date": "21日星期一", "high": "高溫 30℃", "fengli": "<![CDATA[<3級]]>", "low": "低溫 24℃", "fengxiang": "西南風", # "type": "晴"}, # {"date": "22日星期二", "high": "高溫 29℃", "fengli": "<![CDATA[<3級]]>", "low": "低溫 24℃", "fengxiang": "北風", # "type": "雷陣雨"} # ], # "ganmao": "各項氣象條件適宜,無明顯降溫過程,發生感冒機率較低。", "wendu": "25" # }, # "status": 1000, # "desc": "OK"} j = JMESPathExtractor() j_1 = j.extract(query=data.forecast[1].date, body=res.text) j_2 = j.extract(query=data.ganmao, body=res.text) print(j_1, j_2) # 結果: # 19日星期六 各項氣象條件適宜,無明顯降溫過程,發生感冒機率較低。

這樣我們就完成了對JSON格式的抽取器,如果返回結果是JSON串,我們可以通過這個抽取器找到我們想要的數據,再進行下一步的操作,或者用來做斷言。

這裡僅僅完成了對JSON格式響應的抽取,之後讀者可以自己添加XML格式、普通字元串格式、Header的抽取器,逐步進行完善。


作者:西邊人

原知乎賬號 [西北人] 已被知乎封禁,先啟用新賬號,本賬號 【馬蟻蛋】

推薦閱讀:

關於黑盒測試的一些總結(適合新手入門使用)
2018年3月1日測試精選
零基礎測試人員發展之路
如何做好功能測試

TAG:Selenium | 自動化測試 | 軟體測試 |