Exemplo n.º 1
0
    def run(self):
        Log.debug("开始执行")

        # 每次进入时清除db
        self.__db_clean()

        # 获取开始时间
        start_time = time.time()
        Log.debug("2-开始时间:" + Utils.get_time(start_time))

        # 执行所有用例
        get_result = self.__get_runner_result()

        # 结束时间
        end_time = time.time()
        Log.debug("7-结束时间" + Utils.get_time(end_time))

        # 获取用例返回的各种数据
        get_case_data = self.__get_case_return_data(get_result['method_names'],
                                                    get_result['result'])

        # 生成报告
        self.__build_report(start_time, end_time, get_case_data)

        Log.debug("9-总共用时" + str(end_time - start_time) + 's')
Exemplo n.º 2
0
    def __process_project_test_code(path, data):
        funs = []
        for key in data['funName']:
            funs.append({"name": key, "data": data['funName'][key]})
        template = Template(get_apis_code_tpl())
        content = template.render(ClassName=data['className'], funs=funs)

        # 写入内容
        Utils.write_file(path, content)
Exemplo n.º 3
0
 def __process_project_model_name(self, path, data):
     # 创建模块目录
     Utils.mkdir(path)
     # 模块目录下面创建__init__.py
     self.__create_init_py(path)
     for key in data:
         filepath = path + '/' + key + '_st.py'
         if os.path.exists(filepath) is False:
             self.__process_project_test_code(filepath, data[key])
Exemplo n.º 4
0
    def build(self):
        get_data = self.get_output_field_data()

        # 获取template路径
        code_path = os.path.dirname(__file__) + '/tpl/template.html'
        # 基础模板文件
        template_html = Utils.open_file(code_path)
        html = Template(template_html).render(get_data)
        # 写入内容
        Utils.write_file(self.report_html_path, html)
        # 发送邮件
        if self.yaml_config.get('reportSendMail') is True:
            self.__send_mail(get_data)
Exemplo n.º 5
0
    def __send_mail(self, data):
        receivers = self.yaml_repore.get('receivers')
        subject = self.yaml_repore.get('title')
        host = self.yaml_repore.get('server.host')
        port = self.yaml_repore.get('server.port')

        # 获取mail_html路径
        html_path = os.path.dirname(__file__) + '/tpl/mail_html.txt'
        # 基础模板文件
        html_code = Utils.open_file(html_path)
        # 邮件发送内容
        content = Template(html_code).render({
            "title":
            subject,
            "all_case_sum":
            data['all_case_sum'],
            "success_case_sum":
            data['success_case_sum'],
            "errors_case_sum":
            data['errors_case_sum'],
            "skipped_case_sum":
            data['skipped_case_sum'],
            "report_path":
            str(host) + ':' + str(port) + '/report.html'
        })
        # 发送邮件
        self._mail.send(receivers, subject, content)
Exemplo n.º 6
0
    def get_cases_content_html(self, data):
        table = self.yaml_repore.get('table')
        new_titles = []
        for k, v in table.items():
            obj = {'name': k, 'text': v}
            new_titles.append(obj)

        content = Utils.open_file(
            os.path.dirname(__file__) + '/tpl/content.html')
        return Template(content).render(datas=data, titles=new_titles)
Exemplo n.º 7
0
    def get_output_field_data(self):
        title = self.yaml_repore.get("title")

        # 所有
        all_case = self.__get_case_info(self.case_data, 'all')
        # 成功
        success = self.__get_case_info(self.case_data, 'success')
        # 错误
        errors = self.__get_case_info(self.case_data, 'error')
        # 跳过
        skipped = self.__get_case_info(self.case_data, 'skipped')
        data = {
            'title': title,  # str
            'start_time': Utils.get_time(self.start_time),  # str
            'end_time': Utils.get_time(self.end_time),  # str
            'all_case_sum': all_case['len'],  # int
            'success_case_sum': success['len'],  # int
            'errors_case_sum': errors['len'],  # int
            'skipped_case_sum': skipped['len'],  # int
        }
        # html
        data['chart_html'] = self.__get_cases_chart_html(data)
        # html
        data['nav_html'] = self.__get_cases_nav_html(data)
        case_info = [{
            'name': 'all_cases',
            'list': all_case['cases']
        }, {
            'name': 'success_cases',
            'list': success['cases']
        }, {
            'name': 'errors_cases',
            'list': errors['cases']
        }, {
            'name': 'skipped_cases',
            'list': skipped['cases']
        }]
        content_html = self.get_cases_content_html(case_info)
        data['content_html'] = content_html

        return data
Exemplo n.º 8
0
    def __init__(self, start_time, end_time, case_data):
        # 获取项目目录
        self.project_path = os.path.dirname(os.path.dirname(__file__))
        self.start_time = start_time
        self.end_time = end_time
        self.case_data = case_data
        self.report_html_path = self.project_path + '/temp/report.html'
        Utils.remove_file(self.report_html_path)

        # yaml init
        _yaml_path = self.project_path + '/config'
        self.yaml_config = Yaml(_yaml_path, 'config')
        self.yaml_apis = Yaml(_yaml_path, 'apis')
        self.yaml_mail = Yaml(_yaml_path, 'mail')
        self.yaml_repore = Yaml(_yaml_path, 'repore')
        self.yaml_response = Yaml(_yaml_path, 'response')

        # 初始化邮箱
        self._mail = Mail(self.yaml_mail.get('host'),
                          self.yaml_mail.get('port'),
                          self.yaml_mail.get('user'),
                          self.yaml_mail.get('passwd'))
Exemplo n.º 9
0
 def __get_cases_nav_html(self, data):
     cases = self.yaml_repore.get("cases")
     new_data = []
     for k, v in cases.items():
         obj = {'text': v}
         if k == 'all':
             obj['num'] = data['all_case_sum']
             obj['bg'] = '#428bca'
         elif k == 'success':
             obj['num'] = data['success_case_sum']
             obj['bg'] = '#3c763d'
         elif k == 'error':
             obj['num'] = data['errors_case_sum']
             obj['bg'] = '#FF4000'
         else:
             obj['num'] = data['skipped_case_sum']
             obj['bg'] = '#0099CC'
         new_data.append(obj)
     return Template(
         Utils.open_file(os.path.dirname(__file__) +
                         '/tpl/nav.html')).render(datas=new_data)
Exemplo n.º 10
0
 def __create_init_py(filepath):
     # 获取写入路径
     init_path = filepath + '/__init__.py'
     # init 是个空文件
     Utils.write_file(init_path, '')
Exemplo n.º 11
0
 def __get_cases_chart_html(self, data):
     return Template(
         Utils.open_file(os.path.dirname(__file__) +
                         '/tpl/chart.html')).render(data)