接口自动化测试框架(python3+requests+excel)
Git:https://github.com/lilinyu861/Interface-Test
环境配置:
开发工具:pycharm2018+Excel
开发框架:python3+requests+excel
接口自动化测试框架介绍:
此接口测试框架,首先由用户设计原始的测试用例并为测试用例写用例注解,将原始测试用例写入excel文件中保存到data_origin文件夹中,例如下图所示
然后调用common文件夹中的generateTestcases.py中的generate_testcases()方法,向方法中传入参数,参数内容包括原始测试用例excel文件位置,生成测试用例excel文件后的保存位置,生成测试用例注解excel文件后的保存位置。
生成测试用例excel文件如下所示:
生成测试用例注解excel文件如下所示:
测试用例生成之后,可以编辑接口测试代码,执行接口测试,然后将测试用例的数据写入excel文件中并存储在reports文件夹中。
接口自动化测试框架各模块详细介绍:
整个测试框架的结构如下图所示:
- common 存放公用的方法
- common_data 存放公用的数据
- data 存放测试用例的excel文件
- data_origin 存放原始测试用例的excel文件
- reports 存放记录接口测试用例返回报文的excel文件
- test 测试测试框架的方法能否正常执行
- testcase 存放接口测试编写的测试用例
整个测试框架主要分为两部分:测试用例生成,接口测试执行
一、 测试用例的生成:
1. 用户将存储原始测试用例的excel文件放到data_origin文件夹中;
2. 编辑接口测试脚本,在接口测试脚本中调用generateTestcase.py文件的generate_testcases方法,生成测试用例并将测试用例写入excel文件存储在data文件夹中。
二、 接口测试执行
1. 接口测试脚本编写,首先读取data文件中的测试用例,并将测试用例生成json格式数据
2. 调用reqMethod里的请求方法,进行接口测试
3. 将接口测试返回数据写入excel文件并保存在reports文件夹中。
"""
接口测试
读取excel中的原始数据,经处理后生成测试用例,利用测试用例对接口进行测试,将接口测试返回结果存放到excel文件中。
"""
from common.generateTestcases import GenerateTestcases
from common.excelToDic import ExcelToDic
from common_data.interfaceUrl import Url
from common.reqMethod import RequestMethod
import xlwt
login_url = Url.login_url
# 原始数据表格位置
origin_excel_path = '../test/data_origin/test_read_excel.xlsx'
# 测试用例数据存放位置
excel_case_1 = '../test/data/test_case_01.xls'
# 测试用例解释数据存放位置
excel_case_2 = '../test/data/test_case_02.xls'
save_path = '../test/reports/report.xls'
g = GenerateTestcases()
# 生成测试用例及测试用例解释的excel文件
g.generate_testcases(origin_excel_path, excel_case_1, excel_case_2)
# 写入的excel
book = xlwt.Workbook(encoding="utf-8")
sheet = book.add_sheet('Sheet1', cell_overwrite_ok=True)
# 报文头
headers = {
'Content-Type': 'application/json'
}
# 将测试用例写入excel文件中
test_cases = ExcelToDic().getExcelData(excel_case_1, 'Sheet1')
print(test_cases)
len = len(test_cases)
for i in range(len):
print(test_cases[i])
response = RequestMethod().post(interface_url=login_url,
headers=headers,
data=test_cases[i])
print(i, response)
# 将数据写入i行j列
sheet.write(0, 0, 'email')
sheet.write(0, 1, 'password')
sheet.write(0, 2, 'response')
sheet.write(i+1, 0, test_cases[i]['email'])
sheet.write(i+1, 1, test_cases[i]['password'])
sheet.write(i+1, 2, response.text)
book.save(save_path)
生成的接口测试结果如下图所示: