robotframework做介面測試 to json 關鍵字使用

ckxllf發表於2019-09-04

  最近開始接觸robotframework做介面測試,由於自己摸索很多地方不太懂,特別是關於json格式轉化,現在做下整理。

  在Python語言中,json資料與dict字典以及物件之間的轉化,是必不可少的操作。首先先做下概念介紹,因為是做測試之前對編碼瞭解較少,所以想要系統學習,一些基礎理論還得學習下。

  JSON 語法 是 JavaScript 物件表示法語法的子集。

  資料在名稱/值對中 kye:value (在雙引號中),後面寫一個冒號,然後是值: “firstName” : “John”

  資料由逗號分隔 ,

  花括號儲存物件 {}

  方括號儲存陣列 []

  物件可以包含多個名稱/值對:

  { “firstName”:“John” , “lastName”:“Doe” }

  陣列可包含多個物件:

  {

  “employees”: [

  { “firstName”:“John” , “lastName”:“Doe” },

  { “firstName”:“Anna” , “lastName”:“Smith” },

  { “firstName”:“Peter” , “lastName”:“Jones” }

  ]

  }

  介面測試處理最多的就是json格式的資料

  示例:

  {

  “id”: “1496654252”,

  “code”: 0,

  “msg”: “ok”,

  “data”: {

  "tag_list": [

  {

  “game_id”: “28”,

  “game_name”: “王者榮耀”

  },

  {

  “game_id”: “29”,

  “game_name”: “鎮魔曲”

  }

  ]

  }

  }

  做介面測試依賴的一些類庫:

  其中json解析會涉及如下幾個庫:

  1、RequestsLibrary,安裝命令:pip install requests

  2、HttpLibrary,安裝命令:pip install robotframework-httplibrary

  3、HttpLibrary.HTTP,這個庫是在HttpLibrary中,HTTP是HttpLibrary的一個class

  4、json,安裝命令:pip install jsonpatch

  5、Collections,這個庫是python自帶的,直接引入即

  取json值兩種情況:

  1. 取json值:使用get json Value 關鍵字

  {

  “id”: “1496654252”,

  “code”: 0,

  “msg”: “ok”

  }

  

通過/id的方式呼叫

  通過單獨/xx/xx/xx這樣一層一層的去解析當然也可以取陣列中物件

  

在這裡插入圖片描述

  但是這樣查出來的結果是個字串,是帶有引號的

  

在這裡插入圖片描述

  如果想去掉雙引號,需要將json字串轉成字典物件。

  2. 取json中用中括號的部分[]

  需要把json的object格式轉成python的Dictionary,

  幾種方法:

  (1)RequestsLibrary中的to json關鍵字

  (2)HttpLibrary.HTTP中的parse json關鍵字

  (3)json中的loads關鍵字

  另外說下: 無錫人流費用 http://www.xasgfk120.com/

  loads():將json資料轉化成dict資料

  dumps():將dict資料轉化成json資料

  

在這裡插入圖片描述

  結果:字典格式

  注意返回結果中:

  pretty_print=false 預設是false,將Content 從Json轉換為字典型別,如果定義為true,將Content從字典型別轉換為Json

  'game_id’變成了u’game_id’是因為發生了型別轉換,str會轉換成unicode

  json.loads()用於將str型別的資料轉成dict。

  可以參考:import json

  name_emb = {‘a’:‘1111’,‘b’:‘2222’,‘c’:‘3333’,‘d’:‘4444’}

  jsDumps = json.dumps(name_emb)

  jsLoads = json.loads(jsDumps)

  print(name_emb)

  print(jsDumps)

  print(jsLoads)

  print(type(name_emb))

  print(type(jsDumps))

  print(type(jsLoads))

  {‘a’: ‘1111’, ‘c’: ‘3333’, ‘b’: ‘2222’, ‘d’: ‘4444’}

  {“a”: “1111”, “c”: “3333”, “b”: “2222”, “d”: “4444”}

  {u’a’: u’1111’, u’c’: u’3333’, u’b’: u’2222’, u’d’: u’4444’}

  取值

  使用Get From Dictionary關鍵字,此關鍵字來源與Collections庫;可以看到Get From Dictionary後面跟著兩個引數,分別是json轉成的Dictionary,取第一個物件內的值,從0下標開始

  第一個引數${var1todict[0]}是指上一步json轉成的dictionary,注意要有下標,從0開始:[0];第二個引數是我們要取的key。

  

在這裡插入圖片描述


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2655970/,如需轉載,請註明出處,否則將追究法律責任。

相關文章