欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

思路如下:

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

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

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

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

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則代表測試類實例的全局變量字典,common.dict_get方法的具體實現(xiàn)請移步方法具體實現(xiàn)

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

import re

# 解析字符串中全局變量并進行替換
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)備進行解析的變量<str>
  :param global_var_dic: 全局變量字典<dict>
  :param global_var_regex: 識別全局變量正則表達式<str>
  :param match2key_sub_string_start_index: 全局變量表達式截取成全局變量字典key值字符串的開始索引<int>
  :param match2key_sub_string_end_index: 全局變量表達式截取成全局變量字典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)建識別全局變量的正則規(guī)則,然后運用re.sub方法進行替換。其中,re.sub中的repl參數(shù)可接受函數(shù)作為參數(shù)。global_var_repl方法中,使用global_var_dic字典去獲取匹配的值并返回。

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

最佳實踐

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

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

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

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

相關(guān)文章

  • pyqt5中QThread在使用時出現(xiàn)重復(fù)emit的實例

    pyqt5中QThread在使用時出現(xiàn)重復(fù)emit的實例

    今天小編就為大家分享一篇pyqt5中QThread在使用時出現(xiàn)重復(fù)emit的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • PyTorch使用GPU加速計算的實現(xiàn)

    PyTorch使用GPU加速計算的實現(xiàn)

    PyTorch利用NVIDIA CUDA庫提供的底層接口來實現(xiàn)GPU加速計算,本文就來介紹一下PyTorch使用GPU加速計算的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Linux下通過python獲取本機ip方法示例

    Linux下通過python獲取本機ip方法示例

    這篇文章主要給大家介紹了關(guān)于在Linux下通過python獲取本機ip的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python 制作簡單的音樂播放器

    python 制作簡單的音樂播放器

    這篇文章主要介紹了python 制作簡單的音樂播放器,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • python使用xmlrpclib模塊實現(xiàn)對百度google的ping功能

    python使用xmlrpclib模塊實現(xiàn)對百度google的ping功能

    這篇文章主要介紹了python使用xmlrpclib模塊實現(xiàn)對百度google的ping功能,實例分析了xmlrpclib模塊的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python 實現(xiàn)敏感詞過濾的方法

    python 實現(xiàn)敏感詞過濾的方法

    今天小編就為大家分享一篇python 實現(xiàn)敏感詞過濾的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Selenium執(zhí)行完畢未關(guān)閉chromedriver/geckodriver進程的解決辦法(java版+python版)

    Selenium執(zhí)行完畢未關(guān)閉chromedriver/geckodriver進程的解決辦法(java版+python版

    這篇文章主要介紹了Selenium執(zhí)行完畢未關(guān)閉chromedriver/geckodriver進程的解決辦法(java版+python版),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python 獲取域名到期時間的方法步驟

    python 獲取域名到期時間的方法步驟

    這篇文章主要介紹了python 獲取域名到期時間的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • pandas如何修改特定的值

    pandas如何修改特定的值

    這篇文章主要介紹了pandas如何修改特定的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python3.7?打包成exe程序方式(只需兩行命令)

    python3.7?打包成exe程序方式(只需兩行命令)

    這篇文章主要介紹了python3.7?打包成exe程序方式(只需兩行命令),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論