基於Python的介面自動化實戰-基礎篇之JSON模組的操作
引言
在使用Python進行介面自動化測試指令碼時,一般都是指令碼只寫介面測試邏輯實現,而執行指令碼時需要的測試用例資料都是寫入excel、資料庫或者指定的配置檔案中,指令碼通過讀取這些測試資料來進行不同測試用例的執行,這樣就做到了測試指令碼和測試資料的分離,易於後續寫實指令碼的維護,這部分後續介面自動化框架來介紹怎麼實現指令碼和資料的分離。在python指令碼構建介面測試請求時,如傳送put、post這樣的請求時,一般都是以JSON格式的進行請求體資料傳送請求,我們編寫的介面測試資料一般都是參考介面文件說明進行的,也就是編寫的介面測試資料的請求體一般都是JSON格式。由於python資料型別與標準的JSON資料格式不一樣,因此在python指令碼讀取資料進行介面測試前,需要將JSON資料轉換成python物件。針對json資料交換,python語言封裝實現了相關的模組:json,以下介紹python json模組的主要操作和應用。
1、JSON是啥?
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,易於人閱讀和編寫。在現在的應用程式軟體中前端和後端資料互動一般都是使用的JSON
2、JSON的有效資料型別
在 JSON 中,一般資料都是key-value對形式存在,資料使用花括號{}包含,value值必須是以下資料型別之一:
- 字串
- 數字
- 物件(JSON 物件)
- 陣列
- 布林
- Null
JSON 的值不可以是以下資料型別之一:
- 函式
- 日期
- undefined
有效JSON資料示例:
字串:{ "name":"John" }
數字:{ "name":123 }
物件:{"employee":{ "name":"Bill Gates", "age":62, "city":"Seattle" }}
陣列:{"employees":[ "Bill", "Steve", "David" ]}
布林:{ "sale":true }
null:{ "middlename":null
如果json比較複雜,可以上json線上解析網站:https://www.sojson.com/,核驗json是否標準正確。
3、Python JSON庫的使用
使用 JSON 函式需要匯入 json 庫:import json
開啟Pycharm工具匯入json庫後,模組下封裝的方法如下:
其主要封裝json.dumps()、json.loads()、json.dump()、json.load()
json.dumps():將 Python 物件編碼成 JSON 字串
json.loads():將已編碼的 JSON 字串解碼為 Python 物件
json.dump():將Python內建型別序列化為json物件後寫入檔案
json.load():將檔案中讀取到的json形式的字串轉化為python型別
python資料型別和json型別轉換關係表如下:
python資料轉成json型別:
json型別轉成python資料型別:
json.dumps()使用示例:
編輯如下程式碼:
import json data1 = (1,2,3) # 元組 data2 = {'張山':'25','王五':'30'} # 字典 data3 = [1,2,3] # 列表 print(json.dumps(data1)) print(json.dumps(data2)) print(json.dumps(data3))
執行結果如下:
[1, 2, 3]
{"\u5f20\u5c71": "25", "\u738b\u4e94": "30"}
[1, 2, 3]
執行後發現python物件都轉換成json型別了,其中元組和列表轉換成json的陣列,字典轉換成帶雙引號的json格式,其中預設將字串轉換成ascii碼,如果不想轉換成ascii碼,將上面程式碼改成如下即可:
print(json.dumps(data2,ensure_ascii=False))
json.loads()使用示例:
編輯如下程式碼:
import json data1 = '{"name":"zhangshan","age":25}' print(json.loads(data1))
輸出如下:
{'name': 'zhangshan', 'age': 25}
json.dump()使用示例:
編輯如下程式碼:
import json data = { 'name': 'wangwu', 'liebiao': [1, 2, 3, 4], 'yuanzu': (1, 2, 3) } with open('json_test.txt', 'w+') as f: json.dump(data,f)
執行完成後會生成同路徑下生成一個json_test.txt的檔案,檔案內容如下:
json.load()使用示例:
在上面生成的檔案基礎上,讀取檔案的內容,程式碼如下:
import json data = { 'name': 'wangwu', 'liebiao': [1, 2, 3, 4], 'yuanzu': (1, 2, 3) } with open('json_test.txt', 'w+') as f: json.dump(data,f) with open('json_test.txt') as f: print(json.load(f))
輸出如下:
{'yuanzu': [1, 2, 3], 'name': 'wangwu', 'liebiao': [1, 2, 3, 4]}
如上就是python json庫的相關方法的使用和應用,後續有json資料和python型別互動轉換時就需要引入json庫,實現資料轉換。