python 接口自动化测试_python接口自动化测试之接口数据依赖
作者:泰斯特test
鏈接:https://juejin.im/post/5cc11f6be51d45401f566d14
在做自動化測試時,經常會對一整套業(yè)務流程進行一組接口上的測試,這時候接口之間經常會有數據依賴,那么具體要怎么實現這個依賴呢。
思路如下:
核心代碼實現:
抽取接口的返回值存儲到全局變量字典中
# 抽取接口的返回值存儲到全局變量字典中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='${.*?}', match2key_sub_string_start_index=2, match2key_sub_string_end_index=-1): ''' :param pre_resolve_var: 準備進行解析的變量 :param global_var_dic: 全局變量字典 :param global_var_regex: 識別全局變量正則表達式 :param match2key_sub_string_start_index: 全局變量表達式截取成全局變量字典key值字符串的開始索引 :param match2key_sub_string_end_index: 全局變量表達式截取成全局變量字典key值字符串的結束索引 :return: 解析后的變量 ''' 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參數可接受函數作為參數。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 rightProcess finished with exit code 0可以看出輸出還是符合預期的,將字符串中全局變量成功解析。
最后小編為初學者們準備的python入門教程!
請私信回復:“學習”就可以拿到一份我為大家準備的Python學習資料!
總結
以上是生活随笔為你收集整理的python 接口自动化测试_python接口自动化测试之接口数据依赖的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 判断有向图g中顶点i到顶点j是否有路径_
- 下一篇: python数据分析方向_python数