引言:接上一章接口联调测试脚本优化v2.0,本章进行脚本参数的一个优化,将参数都放入文件,实现脚本一次编译之后,后续只需维护文件即可。
目录
优化任务:
把相关的接口测试参数放入csv文件中,通过程序把相关的参数读取出来,传入接口测试脚本中。
遇到的问题:
创建一个csv文件,将各个接口参数写入文件中,csv文件如下:
- 对于共同的参数url、expected_result、interfacename直接调用即可。
- 但是由于每一个接口有不同的参数,参数个数也不同,需要再使用循环去读取。
- 这里将参数的数量直接写在参数前面,然后定义一个j变量等于参数数量。
- 不难发现,H列作为循环开始index值为7,而循环结束值就是2*j+7。
- 所以后面不同的参数数据就可以在循环内去读取了,代码参考如下。
脚本实现:
# 使用参数化技术进行多个接口联调的测试脚本的优化 import requests import csv class Workflow_Test_v4(): def userinterface_test(self, url, userinfo, expected_result, interfacename): response = requests.post(url, data=userinfo).text print(response) r = response.find(expected_result) if r > 0: print(interfacename, "测试通过") else: print(interfacename, "测试失败") if __name__ == '__main__': workflowobj4 = Workflow_Test_v4() file = open("test1.csv", "r") table = csv.reader(file) for row in table: # 逐行读取相关内容,并将其设置为相应的参数 url = row[1] expected_result = row[3] interfacename = row[5] # print("url是:", url, " ", "expected_result是:", expected_result, " ","interfacename是:", interfacename) # 读取接口测试数据 userinfo = {} j = int(row[6]) for i in range(7, 2*j+7, 2): userinfo[row[i]] = row[i+1] # print(userinfo) # 实例化测试类,传入测试数据 workflowobj4.userinterface_test(url, userinfo, expected_result, interfacename)
小结:
- 脚本参数化的问题主要是找到参数的规律
- 共同的参数有:
- url:接口访问地址
- expected_result:接口响应预期结果
- interfacename:接口名称
- 个性的参数:接口测试数据不同
- 人工统计测试数据的个数,将其写入测试数据模板中
- 循环方式:找到循环规律,主要分析几个值就行
- 初始值----index = 7
- 终止值----index = 2*j+7(因为python取不到最后一位,所以将其作为范围的终止值)
- 每次变化几个----因为参数有键值和属性两个值,所以取下一个参数时,要i+2。
- 将找到的参数存放入字典中:字典名[key] = value即userinfo[row[i]] = row[i+1]
优势:
以后的接口测试,只需要维护接口测试数据的文档即可,不需要修改任何的代码了。