按照上节配置完环境后,执行ant构建命令,则会在results目录下生成结果文件testreport.html和.jtl文件。
这节讲两个结果文件的处理。
配置文件的构成
如前文所说,此方案设计为一个接口测试的项目为服务器上一个独立的目录。而每个项目报错时需要发送的钉钉群、邮箱组不同。报告展示的服务器也有可能会更换,所以最好将这些信息抽离出来放到配置文件中。
config.json
{
"urls": ["钉钉群的token1", "钉钉群的token2"],
"mail_receiver": ["xxx@xx.com", "yyy@qq.com"],
"working_d": "/xxx/xxx"
"reports_d": "报告展示在服务器上路径",
"atMobiles": ["170xxxxxxxx", "183yyyyyyyy"],
"server_url": "http://xxx.xxx.xxx.xxx/reports/",
"send_flag": 0,
"project_name": "project_name"
}
- urls:钉钉群token的列表。
- mail_receiver: 接受邮件邮箱的列表。
- working_d: 需要处理的报告所在目录。即当前目录。
- reports_d:报告展示服务在linux上的目录 如/usr/xxx/reports 此目录应为一个服务器指定的资源存放目录。
- atMobiles:钉钉通知时需要at的人。
- server_url: 展示报告的部分url,需要和实际报告xxx.html在程序中拼接。
- send_flag: 置为1时报告始终发送,置为0时按实际情况发送。1一般为调试时使用。
- project_name: 邮件中的标题会使用。
html文件的处理
html文件处理逻辑比较简单:如果文件内有接口报错信息,则发送信息到钉钉群&发送邮件给指定对象。 随后将html文件移动到一个对外展示的web服务器目录下。
如果没有错误,则直接删除html文件。
(html文件和jtl文件处理完都需要删除,因为jmeter对结果文件是追加写入的,如果不删除则会不断往文件中写入下一次测试的结果)
发送邮件的代码比较简单,因为我用的邮箱服务为阿里云邮箱,可以直接参考 阿里的smtp文档.
钉钉发送报错部分代码如下:
class Ding:
def __init__(self, new_tr):
with open('config.json') as f:
self.temp = json.loads(f.read())
self.url = self.temp['urls']
self.header = {
'Content-Type': 'application/json; charset=utf-8'}
self.working_d = self.temp['working_d']
self.new_tr = new_tr
self.reports_d = self.temp['reports_d']
self.atMobiles = self.temp['atMobiles']
self.server_url = self.temp['server_url']
self.send_flag = self.temp['send_flag'] #如需不管有没有错误始终发送报告,该字段为1 即可
def run(self,):
with open(self.new_tr, encoding='utf-8') as f:
temp1 = f.read()
p = r'<div class="failure">([^<]+)</div>' #正则,有错误的行
q = re.findall(p, temp1)
if (len(q) > 0) or self