引言:本章将会基于v4.0,编写接口测试报告,同时汇总之前的优化阶段。
接口联调测试优化阶段目录:
本次v5.0文章目录
V5.0优化任务
编写测试报告
设计思路
- 需要把接口实际响应结果以及测试结论存入测试报告。
- 测试报告要包括:接口名称,接口实际返回值,接口测试结论。
- 可以在主方法中定义一个result_data的字典用来存放接口实际返回值以及测试结论,最后需要return 获取完数据的result_data
- 定义一个新的方法将字典数据内容写入测试报告。
- 因为字典包含键+值,所以循环写入内容时要用:for key, value in result_data.items():
# 把相关的测试结论写入测试报告 def result_report(self, interfacename, reportfilename, result_data): # 这次采用追加的方式写,用a(当然w覆盖写也是可以的) file = open(reportfilename, "a") for key, value in result_data.items(): file.write(interfacename + "," + key + "," + value + ",") # 写入一行测试结论之后换行 file.write("\n") # 写完之后记得关闭文件 file.close()
最终完整脚本实现
# 把测试脚本结构优化,脚本参数化以及测试报告所有的技术进行合并 import requests import csv # 定义测试类 class Workflow_Test_v6(): # 接口测试通用脚本 def userinterface_test(self, url, userinfo, expected_result, interfacename): # 定义字典数据,存储实际接口响应结果和测试结论 result_data = {} # 发送请求并获取响应 response = requests.post(url, data=userinfo).text # print(response) # 将接口实际返回值存入字典 result_data["接口实际返回值"] = str(response) r = response.find(expected_result) if r > 0: print(interfacename, "测试通过") # 将测试结论存入字典 result_data["测试结论"] = "测试通过" else: print(interfacename, "测试失败") result_data["测试结论"] = "测试失败" print(result_data) return result_data # 把相关的测试结论写入测试报告 def result_report(self, interfacename, reportfilename, result_data): # 这次采用追加的方式写,用a(当然w覆盖写也是可以的) file = open(reportfilename, "a") for key, value in result_data.items(): file.write(interfacename + "," + key + "," + value + ",") # 写入一行测试结论之后换行 file.write("\n") # 写完之后记得关闭文件 file.close() if __name__ == '__main__': workflowobj6 = Workflow_Test_v6() file = open("test1.csv", "r") reportfilename = "test_result6.csv" 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 = {} result_data = {} j = int(row[6]) for i in range(7, 2*j+7, 2): userinfo[row[i]] = row[i+1] # print(userinfo) # 实例化测试类,传入测试数据 result_data = workflowobj6.userinterface_test(url, userinfo, expected_result, interfacename) # 调用写入测试报告文件,传入测试结论及实际接口响应结果 workflowobj6.result_report(interfacename, reportfilename, result_data)
注意点: 每次打开csv文件查看完之后都要记得关闭文件,否则开着文件的话,程序无法运行。
优势:
- 一个脚本的程序就可以对应若干条接口测试
- 只需要维护测试数据就可以完成任意组接口的测试
- 所有接口测试的结论都可以自动生成测试报告文件。