Пример #1
0
def send_msg(file_path):
    # 第一步连接到stmp服务器
    smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)
    smtp.login("需要自己填写邮箱", "需要自己填写邮箱的秘钥")
    # 第二步构建邮件
    smg = MIMEMultipart()
    text_smg = MIMEText(open(file_path, "r", encoding="utf8").read(), "html")
    smg.attach(text_smg)

    file_msg = MIMEApplication(open(file_path, "rb").read())
    file_msg.add_header('content-disposition',
                        'attachment',
                        filename='reports.html')
    smg.attach(file_msg)

    smg["Subject"] = "测试报告"
    # 添加发件人
    smg["From"] = "需要自己填写邮箱"
    # 添加收件人  这里读取配置文件中的邮箱账号
    smg["To"] = conf.get("email", "email")

    # 第三步发送邮件
    smtp.send_message(smg,
                      from_addr="需要自己填写邮箱",
                      to_addrs=conf.get("email", "email"))
Пример #2
0
    def setUp(self):

        self.url = conf.get("env", "base_url") + "/member/login"

        self.headers = eval(conf.get("env", "headers"))
        self.data = data.login
        self.data.update({"mobile_phone": case_data.phone})
        self.method = "post"
        self.requests = SendRequests1()
Пример #3
0
 def __init__(self):
     # 连接数据库
     self.con = pymysql.connect(host=conf.get("mysql", "host"),
                                user=conf.get("mysql", "user"),
                                password=conf.get("mysql", "password"),
                                port=conf.getint("mysql", "port"),
                                charset="utf8")
     # 创建一个游标
     self.cur = self.con.cursor()
Пример #4
0
    def setUp(self):
        # 准备测试数据
        phone1 = "15897749" + str(random.randint(100, 1000))

        self.url = conf.get("env", "base_url") + "/member/register"
        self.headers = eval(conf.get("env", "headers"))

        self.data = data.regeister
        self.data.update({"mobile_phone": phone1})
        self.method = "post"
        self.requests = SendRequests1()
Пример #5
0
    def test_register(self, case):
        # ------第一步:准备用例数据------------
        # 请求的参数
        # 增加判断
        if "#phone#" in case["data"]:
            # 生成手机号
            phone = self.random_phone()
            # 进行替换
            case["data"] = case["data"].replace("#phone#", phone)
        data = eval(case["data"])
        # 请求的方法
        method = case["method"]
        # 请求的地址
        url = conf.get("url_project", "url") + case["url"]
        # 当前用例所在行
        row = case["case_id"] + 1
        # 请求头(配置文件中读取请求头)
        headers = eval(conf.get("url_project", "headers"))
        # 预期结果
        expected = eval(case["expected"])

        # ------第二步:发送请求到接口,获取实际结果--------
        res1 = token_http.send(url=url,
                               method=method,
                               json=data,
                               headers=headers)
        res = res1.json()

        # -------第三步:比对预期结果和实际结果-----
        try:
            self.assertEqual(eval(expected["code"]), res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if res["msg"] == "ok":
                # 去数据库查询当前账号是否存在
                sql = "SELECT * FROM futureloan.member WHERE mobile_phone ={}".format(
                    phone)
                # 获取数据库中有没有该用户信息
                count = self.db.count(sql)
                # 对数据库中返回的数据做断言,判断数据库中是否有一条数据
                self.assertEqual(1, count)
        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value="未通过")
            print("预期结果:{}".format(expected))
            print("实际结果;{}".format(res))
            Log.info("用例:{}--------->未通过".format(case["title"]))
            Log.error(e)
            raise e
        else:
            self.excel.write_data(row=row, column=8, value="通过")
            Log.info("用例:{}--------->通过".format(case["title"]))
Пример #6
0
def replace_data(data):
    s=r"#(.+?)#"
    while re.search(s,data):
        # 匹配第一个待替换的数据,返回的是对象
        res=re.search(s,data)
        # 提取待替换的内容
        item=res.group()
        # 获取替换内容中的数据项
        key=res.group(1)
        try:
            data=data.replace(item,conf.get("url_project",key))
        except:
            data=data.replace(item,getattr(testdata,key))
    return data
Пример #7
0
# -*- coding: utf-8 -*-

import logging
from logging.handlers import TimedRotatingFileHandler
from common.contants import LOG_DIR
from common.myconfig import conf
"""该模块是生成日志的"""

# 读取配置文件中的数据,方便后续修改直接在配置文件中修改
level = conf.get("logging", "level")
f_level = conf.get("logging", "f_level")  # 输出道文件等级
s_level = conf.get("logging", "s_level")  # 输出到控制台等级


class my_log():
    @staticmethod
    def cteate_logger():
        # 创建一个python24日志收集
        mylog = logging.getLogger("python24")
        # 设置日志默认收集等级
        mylog.setLevel(level)

        # 添加输出渠道
        # 输出到控制台
        sh = logging.StreamHandler()
        # 设置输出等级
        sh.setLevel(s_level)
        # 将输出渠道绑定到日志收集器上
        mylog.addHandler(sh)

        # 输出到文件
Пример #8
0
# 第一步创建测试套件"""一定记得后面带括号()""""
suite = unittest.TestSuite()
# 加载用例到套件

loader = unittest.TestLoader()
suite.addTest(loader.discover(CASE_DIR))

# ——————————————第二种模块加载测试用例类的方式-------------------------------------------------
# 第2种,通过模块去加载用例
# 创建一个加载对象
# import testcases  #导入模块
# loader = unittest.TestLoader()
# suite.addTest(loader.loadTestsFromModule(testcases))

# 配置文件修改报告名称
res = conf.get("report", "filename")
dir = os.path.join(REPORTS_DIR, res)

with open(dir, "wb") as f:
    runner = HTMLTestRunner(stream=f,
                            title="接口测试报告",
                            description="测试报告的描述信息",
                            tester="测试人员")
    # 第四步:运行测试套件
    runner.run(suite)

# 方式二:生成测试报告
# runner=HTMLTestRunner(stream=open(r"D:\pycharm\test_project\reports\reports.html","wb"),tester="空城",description="进阶3",title="用例报告")
# runner.run(suite)
#
# """生成第二种测试报告样式"""