def trigger(self, data): ''' 实现套件的运行 :param data: :return: ''' print('data的值是{}'.format(data)) filter = {'_id': data.get("id")} # 通过filter查询到套件的信息 suite = self.db.search('interface', 'suite', filter) print('suite的值是{}'.format(suite)) if not suite: return filter['_id'] # 定义一个变量,result->insert report表中的信息 result = { '_id': get_case_id(), 'team': suite[0]['team'], 'project': suite[0]['project'], # 包含case+response的详细信息 'result': [] } for case_id in suite[0]["cases"]: # 通过case_id去cases这个表中查询详细的接口信息 case = self.db.search('interface', 'cases', {'_id': case_id}) print('case的值是{}'.format(case)) # 调用一个运行接口用例的方法 case = self.run(case[0]) #todo 想把case放到report这个表中 result['result'].append(case)
def trigger(self, data): ''' :param data: :return: ''' filter = {'_id': data.get('id')} # suite是列表 suite = self.db.search('interface', 'suite', filter) print('suite的值是', suite) if not suite: return filter['_id'] # 为了把运行接口放在report这个库里面,所以在这个位置定义一个储存数据的容器 result = { '_id': get_case_id(), 'team': suite[0]['team'], 'project': suite[0]['project'], 'result': [] } for case_id in suite[0]['cases']: # case是列表 case = self.db.search('interface', 'cases', {'_id': case_id}) # 调用一个运行接口用例的方法 case = self.run(case[0]) result['result'].append(case)
def save(self, data): ''' 保存功能 :return: ''' data.setdefault('_id', get_case_id()) return self.db.insert('automation', 'cases', data)
def save_suite(self, data): ''' 把套件内容保存到interface-suite表中 :return: ''' data.setdefault('_id', get_case_id()) result = self.db.insert('interface', 'suite', data) return result
def save_cases(self, data): ''' 把前端收集到的data数据保存到数据库中,insert :param data: :return: insert_id ''' case_id = get_case_id() # 把_id放到data数据中 data.setdefault('_id', case_id) # 把data数据插入到mongo数据库中 id = self.db.insert('interface', 'cases', data) return id
def save_cases(self, data): ''' :param data: :return: ''' # 构造_id 原则-唯一的,不重复 case_id = get_case_id() # 然后_id放到data里面去 data.setdefault('_id', case_id) # 把data数据保存到数据库 id = self.db.insert('interface', 'cases', data) return id
def excute(self, data): ''' 1.开始压测 2.我们要读取locust_stats.csv文件里面 请求,最大,平均,最小的请求数 3.我们把上面字段的内容提出出来 然后以邮件的形式发送 :param data: :return: ''' # 获取data里面的code的值 id = get_case_id() code = data.get('code') # 把页面的code值写到文件中 f = open('locust_study.py', 'w', encoding='utf-8') f.write(code) f.close() # cmd进行格式化 data = {‘code’:,} 字典 cmd = CMD.format(**data) os.system(cmd) # locust_stats.csv 文件名字固定 # 读取文件里面的内容 file = open('locust_stats.csv') lines = file.readlines() print(lines) # total,average,minimum,maximum total = lines[2].split(',')[2] average = lines[2].split(',')[5] minimum = lines[2].split(',')[6] maximum = lines[2].split(',')[7] sender = '*****@*****.**' receiver = '*****@*****.**' message = ''' <h3>报警信息</h3> <label style='background-color:red'>请求次数:{total}</label></br> <label style='background-color:red'>平均响应时间: {average}</label></br> <label style='background-color:red'>最小响应时间:{minimum}</label></br> <label style='background-color:red'>最大响应时间:{maximum}</label></br> ''' # total, average, minimum, maximum message = message.format( **{ 'total': total, 'average': average, 'minimum': minimum, 'maximum': maximum, }) send_mail(sender, receiver, message) # 发送邮件 return id
def trigger(self,data): ''' 1.查询数据库 commands 2.execute这个函数 ''' filter = {'_id':data.get('id')} cases = self.db.search('automation','cases', filter) for case in cases: result = self.execute(case['commands']) report = { '_id':get_case_id(), 'case_id':case['_id'], 'case_name':case['casename'], 'result':result } self.db.insert('automation', 'report', report)
def extract_parameter(self, data): ''' 对数据提取的表达式做解析 e.g data.adcode = sid 引用 sid => {sid} 'extract': [{'expression': 'data.adcode', 'expected': 'sid'}] 1.解析 'data.adcode' 2. 变量管理的存储方式一样--自己构造 {name:sid,value:320583} :param data: :return: ''' print(data) if "extract" not in data or not data['extract']: return data # 参考断言 逻辑一样的 filter = { '_id': get_case_id(), 'type': 'variable', 'team': data.get('team'), 'project': data.get('project') } for extract in data['extract']: expr = extract['expression'] name = extract['expected'] tmp = data['response']['json'] for item in expr.split('.'): try: tmp = tmp[int(item)] except: tmp = tmp[item] #todo 1.直接构造variable表 {name:sid,value:tmp} {sid} #2.g.data filter['name'] = name filter['value'] = tmp self.db.insert('variable', 'variable', filter) return data