引言:接上一章接口联调测试脚本优化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]
优势:
以后的接口测试,只需要维护接口测试数据的文档即可,不需要修改任何的代码了。
创建一个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]
优势:
以后的接口测试,只需要维护接口测试数据的文档即可,不需要修改任何的代码了。
脚本参数化的问题主要是找到参数的规律共同的参数有:
- url:接口访问地址expected_result:接口响应预期结果interfacename:接口名称
- 人工统计测试数据的个数,将其写入测试数据模板中循环方式:找到循环规律,主要分析几个值就行
- 初始值----index = 7终止值----index = 2*j+7(因为python取不到最后一位,所以将其作为范围的终止值)每次变化几个----因为参数有键值和属性两个值,所以取下一个参数时,要i+2。
以后的接口测试,只需要维护接口测试数据的文档即可,不需要修改任何的代码了。



