中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python接口自動化測試之接口數據依賴如何實現

發布時間:2021-08-04 13:42:42 來源:億速云 閱讀:158 作者:小新 欄目:開發技術

小編給大家分享一下python接口自動化測試之接口數據依賴如何實現,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在做自動化測試時,經常會對一整套業務流程進行一組接口上的測試,這時候接口之間經常會有數據依賴,那么具體要怎么實現這個依賴呢。

思路如下:

  1. 抽取之前接口的返回值存儲到全局變量字典中。

  2. 初始化接口請求時,解析請求頭部、請求參數等信息中的全局變量并進行替換。

  3. 發出請求。

核心代碼實現:

抽取接口的返回值存儲到全局變量字典中

# 抽取接口的返回值存儲到全局變量字典中

if set_global_vars and isinstance(set_global_vars, list):
  for set_global_var in set_global_vars:
    if isinstance(set_global_var, dict):
      name = set_global_var.get('name') # name 代表全局變量的名字
      query = set_global_var.get('query') # query 代表全局變量的查詢語句
      value = common.dict_get(response_json, query) # response_json 代表接口的響應數據
      self.global_vars[name] = value

其中set_global_vars代表的是當前測試用例的全局變量設置列表, self.global_vars則代表測試類實例的全局變量字典,common.dict_get方法的具體實現請移步方法具體實現

解析字符串中全局變量并進行替換

import re

# 解析字符串中全局變量并進行替換
def resolve_global_var(pre_resolve_var, global_var_dic, global_var_regex='\${.*?}',
          match3key_sub_string_start_index=2, match3key_sub_string_end_index=-1):

  '''
  :param pre_resolve_var: 準備進行解析的變量<str>
  :param global_var_dic: 全局變量字典<dict>
  :param global_var_regex: 識別全局變量正則表達式<str>
  :param match3key_sub_string_start_index: 全局變量表達式截取成全局變量字典key值字符串的開始索引<int>
  :param match3key_sub_string_end_index: 全局變量表達式截取成全局變量字典key值字符串的結束索引<int>
  :return: 解析后的變量<str>
  '''

  if not isinstance(pre_resolve_var, str):
    raise TypeError('pre_resolve_var must be str!')

  if not isinstance(global_var_dic, dict):
    raise TypeError('global_var_dic must be dict!')

  if not isinstance(global_var_regex, str):
    raise TypeError('global_var_regex must be str!')

  if not isinstance(match3key_sub_string_start_index, int):
    raise TypeError('match3key_sub_string_start_index must be int!')

  if not isinstance(match3key_sub_string_end_index, int):
    raise TypeError('match3key_sub_string_end_index must be int!')

  re_global_var = re.compile(global_var_regex)

  def global_var_repl(match_obj):
    start_index = match3key_sub_string_start_index
    end_index = match3key_sub_string_end_index
    match_value = global_var_dic.get(match_obj.group()[start_index:end_index])
    return match_value if match_value else match_obj.group()

  resolved_var = re.sub(pattern=re_global_var, string=pre_resolve_var, repl=global_var_repl)
  return resolved_var

這里,首先先創建識別全局變量的正則規則,然后運用re.sub方法進行替換。其中,re.sub中的repl參數可接受函數作為參數。global_var_repl方法中,使用global_var_dic字典去獲取匹配的值并返回。

默認參數中,將全局變量做了這樣一個識別: ${GLOBALVAR_NAME}, 用global_var_dic查找并替換全局變量時,則使用了默認預設的起止索引參數。這種寫法我感覺有些奇怪, 但是目前也沒想出更好的方法,如果大家有更好的實現思路的話歡迎討論:)

最佳實踐

我們來模擬一次全局變量替換的效果:

if __name__ == '__main__':
  pre_resolve_var = 'left ${status} right, left ${data} right'
  global_var_dic = {'status': 'STATUS', 'data': 'DATA'}
  resolved_str = resolve_global_var(pre_resolve_var=pre_resolve_var, global_var_dic=global_var_dic)
  print(resolved_str)

下面是控制臺輸出:

left STATUS right, left DATA right

Process finished with exit code 0

可以看出輸出還是符合預期的,將字符串中全局變量成功解析。

以上是“python接口自動化測試之接口數據依賴如何實現”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌苏市| 历史| 大连市| 米易县| 呈贡县| 会理县| 光山县| 临安市| 忻州市| 神农架林区| 竹山县| 离岛区| 宁都县| 墨竹工卡县| 江都市| 武隆县| 奉贤区| 宾阳县| 富民县| 易门县| 甘洛县| 泽普县| 五家渠市| 库车县| 河北区| 集贤县| 林州市| 济源市| 河南省| 瓦房店市| 常熟市| 邯郸市| 石屏县| 江永县| 池州市| 精河县| 乳山市| 丹寨县| 西峡县| 桑日县| 乌拉特前旗|