中国最大的网站排名,外贸平台收费标准,wordpress资源下载页面,dz可以做门户网站吗在实际的测试工作中#xff0c;在做接口自动化测试时往往会遇到接口间数据依赖问题#xff0c;即API_03的请求参数来源于API_02的响应数据#xff0c;API_02的请求参数又来源于API_01的响应数据。
因此通过自动化方式测试API_03接口时#xff0c;需要预先请求API_02接口在做接口自动化测试时往往会遇到接口间数据依赖问题即API_03的请求参数来源于API_02的响应数据API_02的请求参数又来源于API_01的响应数据。因此通过自动化方式测试API_03接口时需要预先请求API_02接口获取到API_03的请求参数而获取API_02的响应又需要预先对API_01发起请求从响应中提取API_02的请求参数。而下面的自动化框架设计便解决了这一问题用于数据驱动的Excel表格设计框架代码实现逻辑当测试 id 为 shop-03 的接口时首先判断【是否运行】。如果为 ‘yes’ 则判断该接口请求类型 ‘POST’ OR ‘GET’ 走不同的逻辑分支。POST请求的话判断是否有【case依赖】【case依赖】为空则无依赖不为空则获取依赖的case id。上述表格中shop-03的case依赖为shop-02获取到依赖的id后代码逻辑主动去判断shop-02接口的相关字段参数【是否运行】/【请求类型】/【case依赖】如果shop-02也存在依赖接口shop-01则代码继续判断shop-01接口对应字段参数。shop-01接口【case依赖】字段为空时获取【请求数据】根据请求数据这个字段获取单独存储在字典中的完整的请求参数发起请求获得shop-01的响应后根据shop-01对应的【被依赖接口的返回数据】提取下游接口。即shop-02的所需要的依赖参数存入一个依赖参数列表中shop-02接口把获取到的参数代入到请求参数中进行请求获取到shop-02的响应后同样根据【被依赖接口的返回数据】提取下游接口shop-03所需要的依赖参数存入依赖参数列表shop-03接口从列表中获取这个参数代入请求参数进入请求获取响应根据【实际结果取值字段】获取要断言的字段并对比预期结果完成该接口的测试。# 主逻辑模块部分代码示例 判断是否有case依赖如果有case依赖则执行depend_data.py中的depend_response_data(self,caseid)方法该方法返回该接口发起请求的依赖参数 elif method Post: if depend_caseid: params_data_list self.depend_result.depend_response_data(depend_caseid) log_info(main_logic.requests_api::根据依赖的caseid{}, 调用depend_data.depend_response_data获取到的依赖数据为{}.format(depend_caseid, params_data_list)) for j in range(len(depend_key_list)): params[depend_key_list[j]] params_data_list[j][0] header rquests_headers() log_info(main_logic.requests_api::执行的用例{}请求url为{}入参为{}请求头为{}.format(caseid,url,params,header)) response self.post_requests(url, params, header) # print(response) self.results_list.append(response) else: header rquests_headers() response self.post_requests(url, params, header) # print(response) self.results_list.append(response)#数据依赖模块部分代码示例 通过excel表中【case依赖】字段一层层向上游接口请求结果储存在一个结果列表中供下游接口调用最后返回测试接口所需要的依赖数据 def depend_response_data(self,caseid): depend_caseid_t self.excel_case_data.get_depend_caseid(caseid) depend_caseid_list [] #如果case依赖字段不为空 if depend_caseid_t: #获取接口串联依赖caseid列表 while depend_caseid_t: depend_caseid_list.append(depend_caseid_t) depend_caseid_t self.excel_case_data.get_depend_caseid(depend_caseid_t) depend_caseid_list.reverse() depend_caseid_list.append(caseid) march_result_list [] num_caseid len(depend_caseid_list) #迭代获取列表中的caseid for i in range(num_caseid): depend_caseid_s self.excel_case_data.get_depend_caseid(depend_caseid_list[i]) depend_key_list self.excel_case_data.get_depend_key(depend_caseid_list[i]).split(,) params_key self.excel_case_data.get_request_key(depend_caseid_list[i]) params self.requests_data[params_key] url self.excel_case_data.get_url(depend_caseid_list[i]) #判断该caseid的测试用例中case依赖是否为空 if depend_caseid_s: #获取上一个依赖接口返回的依赖参数 params_data_list march_result_list[i-1] #根据该caseid数据依赖字段构造该接口的传参 for k in range(len(depend_key_list)): params[depend_key_list[k]] params_data_list[k][0] #对该接口发起请求 header rquests_headers() result post_requests(url, params, header) getdata GetExcelDate() is_depend_response getdata.get_depend_response(depend_caseid_list[i]) #判断该接口是否需要为下一接口返回依赖参数 if is_depend_response: depend_response_list is_depend_response.split(,) results result matchlist depend_response_list matchparams match_params(results, matchlist) march_result_list.append(matchparams) else: print(caseid{}不需要返回被依赖的字段.format(depend_caseid_list[i])) #当该caseid测试用例中case依赖为空时直接请求该接口返回匹配到的下一关联接口的请求参数 else: result self.depend_response(depend_caseid_list[i]) getdata GetExcelDate() is_depend_response getdata.get_depend_response(depend_caseid_list[i]) if is_depend_response: depend_response_list is_depend_response.split(,) results result matchlist depend_response_list matchparams match_params(results, matchlist) march_result_list.append(matchparams) else: print(caseid{}不需要返回被依赖的字段.format(depend_caseid_list[i])) return matchparams最后作为一位过来人也是希望大家少走一些弯路在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈这些资料希望能给你前进的路上带来帮助。视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。