1. 程式人生 > 實用技巧 >基於Python的介面自動化實戰-基礎篇之JSON模組的操作

基於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庫,實現資料轉換。