今天采用Excel继续写一个接口自动化测试框架。
设计流程图
这张图是我的excel接口测试框架的一些设计思路。
首先读取excel文件,得到测试信息,然后通过封装的requests方法,用unittest进行测试。
其中,接口关联的参数通过正则进行查找和替换,为此我专门开辟了一个全局变量池,用于管理各种各样的变量。
最后通过HTMLrunner生成测试报告。如果执行失败,发送测试报告结果邮件。

Excel和结果预览
这个时excel的测试测试用例组织结构图。

这个是运行之后生成的HTML测试报告。

这个时运行之后生成的excel报告。可以看到我故意在预期正则中设置了错误的值,然后用例失败的同时也把失败的预期值标记出来了。

测试失败之后收到的邮件

好了上面就是一些简单的介绍,我们开始进入正题把。
框架结构
首先,要开发这样一个excel接口自动化测试项目必须有一个设计清晰的思路,这样我们在开发框架的过程中才会明白自己要干什么。【关注我的vx公众号:程序员小濠免费获取一份13G的软件测试资源】

Excel相关
用例设计
本次依然采用的是智学网登录接口。使用了智学网中的登录接口和登录验证接口,这两个接口之间有依赖的参数。
配置文件
在项目的根目录创建config.py,把你能想到的配置信息,全部丢在这个文件中进行统一的管理。
#!/usr/bin/env python3
# coding=utf-8
import os
class CF:
"""配置文件"""
# 项目目录
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
# Excel首行配置
NUMBER = 0
NAME = 1
METHOD = 2
URL = 3
ROUTE = 4
HEADERS = 5
PARAMETER = 6 # 参数
EXPECTED_CODE = 7 # 预期响应码
EXPECTED_REGULAR = 8 # 预期正则
EXPECTED_VALUE = 9 # 预期结果值
SPEND_TIME = 10 # 响应时间
TEST_RESULTS = 11 # 测试结果
EXTRACT_VARIABLE = 12 # 提取变量
RESPONSE_TEXT = 13 # 响应文本
# 字体大小
FONT_SET = "微软雅黑"
FONT_SIZE = 16
# 颜色配置
COLOR_PASSED = "90EE90"
COLOR_FAILED = "FA8072"
# 邮箱配置
EMAIL_INFO = {
'username': '1084502012@qq.com',
'password': 2,
'smtp_host': 'smtp.qq.com',
'smtp_port': 465
}
# 收件人
ADDRESSEE = ['1084502012@qq.com']
if __name__ == '__main__':
print(CF.EXPECTED_CODE)
读取/写入excel
在common目录中新建excelset.py文件,在这个文件中我们要实现,读取excel中的用例,写入测试结果并绘制相应的颜色,写入测试耗费时长。
#!/usr/bin/env python
# coding=utf-8
import shutil
import openpyxl
from config import CF
from openpyxl.styles import Font
from openpyxl.styles import PatternFill
from common.variables import VariablePool
class ExcelSet:
"""Excel配置"""
def __init__(self):
shutil.copyfile(VariablePool.get('excel_input'), VariablePool.get('excel_output'))
self.path = VariablePool.get('excel_output')
self.wb = openpyxl.load_workbook(self.path)
self.table = self.wb.active
def get_cases(self, min_row=2):
"""获取用例"""
all_cases = []
for row in self.table.iter_rows(min_row=min_row):
all_cases.append((self.table.cell(min_row, CF.NAME + 1).value,
min_row, [cell.value for cell in row]))
min_row += 1
return all_cases
def write_color(self, row_n, col_n, color=CF.COLOR_FAILED):
"""写入颜色"""
cell = self.table.cell(row_n, col_n + 1)
fill = PatternFill("solid", fgColor=color)
cell.fill = fill
def write_results(self, row_n, col_n, value, color=True):
"""写入结

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



