Example #1
0
 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)
Example #2
0
    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)
Example #3
0
    def save(self, data):
        '''
		保存功能
		:return:
		'''
        data.setdefault('_id', get_case_id())
        return self.db.insert('automation', 'cases', data)
Example #4
0
 def save_suite(self, data):
     '''
     把套件内容保存到interface-suite表中
     :return:
     '''
     data.setdefault('_id', get_case_id())
     result = self.db.insert('interface', 'suite', data)
     return result
Example #5
0
 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
Example #6
0
    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
Example #7
0
 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
Example #8
0
 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)
Example #9
0
    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