def send_mail(self):
     """发送邮件"""
     # 第三方SMTP服务
     mail_host = settings.MAIL_HOST  # 设置服务器
     mail_user = settings.MAIL_USER  # 用户名
     mail_pass = settings.MAIL_TOKEN  # 口令
     # 设置收件人和发件人
     sender = settings.SENDER
     receivers = settings.RECEIVERS  # 接收邮箱可以设置你的qq或者其它邮箱
     # 创建一个带附件的实例对象
     message = MIMEMultipart()
     # 邮箱主题、收件人、发件人
     subject = settings.THEME  # 邮件主题
     message["Subject"] = Header(subject, "utf-8")
     message["From"] = Header("{0}".format(sender), "utf-8")
     message["To"] = Header("{0}".format(";".join(receivers)), "utf-8")
     # 邮件正文内容
     send_content = settings.SEND_CONTENT
     content_obj = MIMEText(send_content, "plain", "utf-8")  # 第一个参数为邮件内容
     message.attach(content_obj)
     # 构造附件
     att = MIMEText(_text=self._get_zip_file(), _subtype="base64", _charset="utf-8")
     att["Content-Type"] = "application/octet-stream"
     att["Content-Disposition"] = 'attachment;filename="{}"'.format(settings.SEND_FILE_NAME)  # 邮件附件中显示什么名字
     message.attach(att)
     try:
         smtp_obj = smtplib.SMTP()
         smtp_obj.connect(mail_host, 25)  # 25 为 SMTP端口号
         smtp_obj.login(mail_user, mail_pass)
         smtp_obj.send_message(sender, receivers, message.as_string())
         smtp_obj.quit()
         logger().info("邮件发送成功")
         print("邮箱发送成功")
     except smtplib.SMTPException as er:
         logger().error("email end error:{0}".format(er))
Esempio n. 2
0
 def update_mysql(self, sql):
     """
     执行SQL,修改
     """
     logger().info("正在向{0}发送请求:{1}".format(config.get("host"), sql))
     self._public_mysql(sql)
     logger().info("{0}修改成功:{1}".format(config.get("host"), sql))
Esempio n. 3
0
 def delete_mysql(self, sql):
     """
     执行SQL,删除
     """
     logger().info("正在向{0}发送请求:{1}".format(config.get("host"), sql))
     self._public_mysql(sql)
     logger().info("{0}删除成功:{1}".format(config.get("host"), sql))
 def get_allure_report(self):
     """生成报告"""
     # os.system(ALLURE_COMMAND) 运行cmd命令,但是不安全
     logger().info("正在生成测试报告......")
     print(settings.ALLURE_COMMAND)
     subprocess.call(settings.ALLURE_COMMAND, shell=True)
     logger().info("生成测试报告成功......")
Esempio n. 5
0
 def insert_mysql(self, sql):
     """
     执行SQL,新增
     """
     logger().info("正在向{0}发送请求:{1}".format(config.get("host"), sql))
     self._public_mysql(sql)
     logger().info("{0}新增成功:{1}".format(config.get("host"), sql))
 def get_excel(self):
     """
     获取excel数据,定义title,将值与title拼接成字典返回
     :return:
     """
     title = self.sheet.row_values(0)
     data_list = [dict(zip(title, self.sheet.row_values(row))) for row in range(1, self.sheet.nrows)]
     logger().info("读取Excel成功,数据已返回")
     return data_list
Esempio n. 7
0
    def get_allure_report(self):
        """ 生成报告 """

        # os.system(ALLURE_COMMAND)
        # subprocess.Popen(ALLURE_COMMAND, shell=True)
        logger().info('正在生成测试报告.....')
        subprocess.call(settings.ALLURE_COMMAND, shell=True)
        logger().info('生成测试报告成功.....')
        '''
 def test_case(self, item):
     logger().info("正在进行断言...")
     except_data, result = RequestsOperate(
         current_case=item,
         all_excel_data_list=excel_data_list).get_response_msg()
     allure.dynamic.title(item.get('title'))
     allure.dynamic.description(
         "<b style='color:red'>请求的url:</b>{0}<hr />"
         "<b style='color:red'>预期值:</b>{1}<hr />"
         "<b style='color:red'>实际执行结果:</b>{2}<hr />".format(
             item["url"], item["except"], result))
     assert not DeepDiff(except_data, result).get("values_changed", None)
     logger().info("完成断言,{0}-{1}".format(except_data, result))
 def _send_msg(self):
     """发请求"""
     logger().info("正在向{0}发送请求,{1}".format(self.current_case.get("url"),
                                           self.current_case))
     response = requests.request(
         method=self.current_case.get("method"),
         url=self.current_case.get("url"),
         data=self._check_request_data(),
         params=self._check_request_params(),
         cookies=self._check_request_cookies(),
         headers=self._check_request_headers(),
     )
     self._write_cookies(response)
     return json.loads(self.current_case.get("except")), response.json()
Esempio n. 10
0
    def test_case(self, item):
        logger().info('正在进行断言.....')
        except_date, result = RequestsOperate(current_case=item, all_excel_data_list=excel_data_list).get_response_msg()
        # print(DeepDiff(except_date, result))
        allure.dynamic.title(item['title'])

        allure.dynamic.description(
            "<b style='color:red'>请求的url:</b>{}<hr />"
            "<b style='color:red'>预期值: </b>{}<hr />"
            "<b style='color:red'>实际执行结果: </b>{}<hr />".format(item['url'], item['except'], result)
        )


        assert not DeepDiff(except_date, result).get('values_changed', None)

        logger().info('完成断言,{}'.format(except_date, result))
Esempio n. 11
0
 def test_case(self, item):
     logger().info("正在进行断言...")
     except_data, result = RequestsOperate(
         current_case=item,
         all_excel_data_list=excel_data_list).get_response_msg()
     allure.dynamic.title(item.get('title'))
     allure.dynamic.description(
         "<b style='color:red'>请求的url:</b>{0}<hr />"
         "<b style='color:red'>response预期值:</b>{1}<hr />"
         "<b style='color:red'>实际执行结果:</b>{2}<hr />"
         "<b style='color:red'>code预期值:</b>{3}<hr />"
         "<b style='color:red'>实际执行结果:</b>{4}<hr />".format(
             item["url"], item["except"], result,
             json.loads(item["except"]).get("code"), result.get("code")))
     assert result.get("code") == json.loads(item["except"]).get("code")
     logger().info("完成断言,{0}-{1}".format(except_data, result))
Esempio n. 12
0
    def get_excel(self):
        """ 获取Excel数据 """
        # l = []

        title = self.sheet.row_values(0)
        # print(title)
        # for row in range(1, self.sheet.nrows):
        #     l.append(dict(zip(title, self.sheet.row_values(row))))
        # return l
        # print(1111, self.sheet.nrows)
        l = [
            dict(zip(title, self.sheet.row_values(row)))
            for row in range(1, self.sheet.nrows)
        ]
        logger().info('读取Excel 成功,数据已返回')
        return l
Esempio n. 13
0
    def send_mail(self):

        # 第三方 SMTP 服务
        mail_host = settings.MAIL_HOST  # 设置服务器   # 勿动
        mail_user = settings.MAIL_USER  # 用户名
        mail_pass = settings.MAIL_TOKEN  # 口令
        # 设置收件人和发件人
        sender = settings.SENDER
        receivers = settings.RECEIVERS

        # 创建一个带附件的实例对象
        message = MIMEMultipart()

        # 邮件主题、收件人、发件人
        subject = settings.THEME  # 邮件主题
        message['Subject'] = Header(subject, 'utf-8')
        message['From'] = Header("{}".format(sender), 'utf-8')  # 发件人
        message['To'] = Header("{}".format(';'.join(receivers)),
                               'utf-8')  # 收件人
        # 邮件正文内容
        send_content = settings.SEND_CONTENT
        content_obj = MIMEText(send_content, 'plain', 'utf-8')  # 第一个参数为邮件内容
        message.attach(content_obj)

        # 构造附件
        att = MIMEText(_text=self._get_zip_file(),
                       _subtype='base64',
                       _charset='utf-8')
        att["Content-Type"] = 'application/octet-stream'
        att["Content-Disposition"] = 'attachment; filename="{}"'.format(
            settings.SEND_FILE_NAME)  # # filename 为邮件附件中显示什么名字
        message.attach(att)

        try:
            smtp_obj = smtplib.SMTP()
            smtp_obj.connect(mail_host, 25)  # 25 为 SMTP 端口号
            smtp_obj.login(mail_user, mail_pass)
            smtp_obj.sendmail(sender, receivers, message.as_string())
            smtp_obj.quit()
            logger().info('邮件发送成功')

        except smtplib.SMTPException as e:
            logger().error('email send error: {}'.format(e))
Esempio n. 14
0
 def exec_sql_file(self, sqlPath):
     """
     执行SQL文件,对数据初始化
     """
     db = pymysql.connect(**config)
     cursor = db.cursor()
     try:
         with open(u'../conf/{0}'.format(sqlPath), 'r+') as f:
             sql_list = f.read().split(';')[:-1]  # sql文件最后一行加上;
             sql_list = [
                 x.replace('\n', ' ') if '\n' in x else x for x in sql_list
             ]  # 将每段sql里的换行符改成空格
         ##执行sql语句,使用循环执行sql语句
         for sql_item in sql_list:
             print(sql_item)
             cursor.execute(sql_item)
     except BaseException as e:
         logger().warning("运行sql[{0}]时出现错误,错误代码:{1}".format(sql_item, e))
     finally:
         cursor.close()
         db.commit()
         db.close()
 def check_zip(self):
     """打包"""
     try:
         logger().info("正在打包测试报告......")
         BASE_DIR = os.path.join(settings.BASE_DIR, "report")
         start_zip_dir = os.path.join(BASE_DIR, "allure_result")  # 要压缩文件夹的根路径
         zip_file_name = 'allure_report.zip'  # 为压缩后的文件起个名字
         zip_file_path = os.path.join(BASE_DIR, zip_file_name)
         f = zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED)
         for dir_path, dir_name, file_names in os.walk(start_zip_dir):
             # 要是不replace,就从根目录开始复制
             file_path = dir_path.replace(start_zip_dir, '')
             # 实现当前文件夹以及包含的所有文件
             file_path = file_path and file_path + os.sep or ''
             for file_name in file_names:
                 f.write(os.path.join(dir_path, file_name), file_path + file_name)
         f.close()
         logger().info("打包测试报告完成......")
     except Exception as er:
         logger().error("打包测试报告失败:{0}".format(er))
Esempio n. 16
0
 def select_mysql(self, sql):
     """
     Sql查询
     """
     try:
         db = pymysql.connect(**config)
         cursor = db.cursor()
         logger().info("正在向{0}发送请求:{1}".format(config.get("host"), sql))
         cursor.execute(sql)
         message = self._get_dict_data_sql(
             cursor, cursor.fetchall())  # 入参1:sql对象,入参2:select返回结果
         db.commit()
         logger().info("{0}查询成功:{1},结果是:{2}".format(config.get("host"), sql,
                                                    message))
         return message
     except Exception as e:
         db.rollback()
         logger().warning("运行{0}-{1}方法时出现错误,错误代码:{}".format(
             config.get("host"), sql, e))
     finally:
         cursor.close()
         db.close()