最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python接口自動(dòng)化測試之接口數(shù)據(jù)依賴的實(shí)現(xiàn)方法

 更新時(shí)間:2019年04月26日 15:14:38   作者:泰斯特test  
這篇文章主要介紹了python接口自動(dòng)化測試之接口數(shù)據(jù)依賴的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

在做自動(dòng)化測試時(shí),經(jīng)常會(huì)對(duì)一整套業(yè)務(wù)流程進(jìn)行一組接口上的測試,這時(shí)候接口之間經(jīng)常會(huì)有數(shù)據(jù)依賴,那么具體要怎么實(shí)現(xiàn)這個(gè)依賴呢。

思路如下:

  1. 抽取之前接口的返回值存儲(chǔ)到全局變量字典中。
  2. 初始化接口請(qǐng)求時(shí),解析請(qǐng)求頭部、請(qǐng)求參數(shù)等信息中的全局變量并進(jìn)行替換。
  3. 發(fā)出請(qǐng)求。

核心代碼實(shí)現(xiàn):

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

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

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 代表接口的響應(yīng)數(shù)據(jù)
      self.global_vars[name] = value

其中set_global_vars代表的是當(dāng)前測試用例的全局變量設(shè)置列表, self.global_vars則代表測試類實(shí)例的全局變量字典,common.dict_get方法的具體實(shí)現(xiàn)請(qǐng)移步方法具體實(shí)現(xiàn)

解析字符串中全局變量并進(jìn)行替換

import re

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

  '''
  :param pre_resolve_var: 準(zhǔn)備進(jìn)行解析的變量<str>
  :param global_var_dic: 全局變量字典<dict>
  :param global_var_regex: 識(shí)別全局變量正則表達(dá)式<str>
  :param match2key_sub_string_start_index: 全局變量表達(dá)式截取成全局變量字典key值字符串的開始索引<int>
  :param match2key_sub_string_end_index: 全局變量表達(dá)式截取成全局變量字典key值字符串的結(jié)束索引<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(match2key_sub_string_start_index, int):
    raise TypeError('match2key_sub_string_start_index must be int!')

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

  re_global_var = re.compile(global_var_regex)

  def global_var_repl(match_obj):
    start_index = match2key_sub_string_start_index
    end_index = match2key_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

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

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

最佳實(shí)踐

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

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)

下面是控制臺(tái)輸出:

left STATUS right, left DATA right

Process finished with exit code 0

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python3安裝OCR識(shí)別庫tesserocr過程圖解

    python3安裝OCR識(shí)別庫tesserocr過程圖解

    這篇文章主要介紹了python3安裝OCR識(shí)別庫tesserocr過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python光學(xué)仿真學(xué)習(xí)處理高斯光束分布圖像

    Python光學(xué)仿真學(xué)習(xí)處理高斯光束分布圖像

    這篇文章主要為大家介紹了Python光學(xué)仿真學(xué)習(xí)之如何處理高斯光束的分布圖像,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Python 如何引入同級(jí)包和模塊

    Python 如何引入同級(jí)包和模塊

    這篇文章主要介紹了Python 如何引入同級(jí)包和模塊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解Python中xlsxwriter庫的基本操作

    詳解Python中xlsxwriter庫的基本操作

    xlsxwriter是一個(gè)用于創(chuàng)建和修改Excel文件(.xlsx)的Python庫,它提供了豐富的功能,可以創(chuàng)建復(fù)雜的Excel工作簿,本文為大家介紹了它的一些基本操作,希望對(duì)大家有所幫助
    2023-11-11
  • python人工智能遺傳算法示例解析

    python人工智能遺傳算法示例解析

    這篇文章主要為大家介紹了python人工智能遺傳算法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 用Python登錄Gmail并發(fā)送Gmail郵件的教程

    用Python登錄Gmail并發(fā)送Gmail郵件的教程

    這篇文章主要介紹了用Python登錄Gmail并發(fā)送Gmail郵件的教程,利用了Python的SMTP庫,代碼非常簡單,需要的朋友可以參考下
    2015-04-04
  • Python使用xlrd讀取Excel格式文件的方法

    Python使用xlrd讀取Excel格式文件的方法

    這篇文章主要介紹了Python使用xlrd讀取Excel格式文件的方法,實(shí)例分析了Python操作Excel文件的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 教你怎么用Python生成九宮格照片

    教你怎么用Python生成九宮格照片

    過年過節(jié)大家的朋友圈是不是特別熱鬧,每當(dāng)小編看見朋友圈有這種九宮格的照片就覺得特別秀,一直想自己什么時(shí)候也能來秀一個(gè),所以直接拿這個(gè)練練手,酷炸朋友圈一波,直接進(jìn)入主題,需要的朋友可以參考下
    2021-05-05
  • python自定義分頁器的實(shí)現(xiàn)

    python自定義分頁器的實(shí)現(xiàn)

    這篇文章主要介紹了python自定義分頁器的實(shí)現(xiàn),通過自定義分頁器封裝展開主題并對(duì)其實(shí)用方法簡單介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • 將Python項(xiàng)目打包成exe并附帶下載功能的操作流程

    將Python項(xiàng)目打包成exe并附帶下載功能的操作流程

    這篇文章主要為大家詳細(xì)介紹了將Python項(xiàng)目打包成exe并附帶下載功能的操作流程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下
    2023-12-12

最新評(píng)論

增城市| 临颍县| 云林县| 大邑县| 旬阳县| 桦川县| 舞阳县| 左贡县| 九龙城区| 皋兰县| 邵东县| 宁乡县| 宣化县| 清涧县| 浙江省| 崇州市| 甘洛县| 冀州市| 湘潭市| 丹阳市| 垦利县| 巫山县| 绍兴市| 明光市| 敦化市| 鹤峰县| 中江县| 甘孜| 娱乐| 兴山县| 建瓯市| 吉木萨尔县| 邯郸市| 广灵县| 五寨县| 沙雅县| 翁源县| 共和县| 洛宁县| 太原市| 涿鹿县|