Ejemplo n.º 1
0
    def test_login(self,case):
        url = conf.get('env','base_url') + case['url']
        method = case['method']

        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        print('测试用例中data的值是:',data)

        expected = eval(case['expected'])
        headers = eval(conf.get('env','headers'))

        row = case['case_id'] + 1

        response = self.request.send_request(url=url,method=method,json=data,headers=headers)
        res = response.json()
        print('登录-测试用例执行结果:',res)

        try:
            self.assertEqual(res['code'],expected['code'])
            # self.assertEqual(res['msg'],expected['msg'])

        except Exception as e:
            self.excel.write_excel(row=row,column=8,value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row,column=8,value='通过')
            log.info('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 2
0
    def test_loans(self, case):
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']
        data = eval(case['data'])
        # 在请求体中加入,时间戳和签名
        sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
        data.update(sign_info)
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        response = self.request.send_request(url=url,
                                             method=method,
                                             params=data,
                                             headers=headers)
        res = response.json()
        print('项目列表接口返回的结果:', res)
        try:
            self.assertEqual(res['code'], expected['code'])
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.info('测试用例执行通过')
Ejemplo n.º 3
0
 def __init__(self):
     self.conn = pymysql.connect(host=conf.get('db', 'host'),
                                 port=conf.getint('db', 'port'),
                                 user=conf.get('db', 'user'),
                                 password=conf.get('db', 'pwd'),
                                 cursorclass=pymysql.cursors.DictCursor,
                                 charset='utf8')
     self.cur = self.conn.cursor()
Ejemplo n.º 4
0
 def setUpClass(cls):
     url = conf.get('env', 'base_url') + '/user/login/'
     data = {
         "username": conf.get('test_data', 'username'),
         "password": conf.get('test_data', 'password')
     }
     response = cls.request.send_request(url=url, method='post', json=data)
     content = eval(response.content.decode('utf-8'))
     token = content['token']
     CaseData.token_value = 'JWT' + ' ' + token
Ejemplo n.º 5
0
    def test_recharge(self, case):
        """
        将登录放在setupclass中实现,获取到token_value作为该接口的入参
        :param case:
        :return:
        """
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']

        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')

        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        # 在请求体中加入,时间戳和签名
        sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
        data.update(sign_info)
        print('测试用例中data的值是:', data)
        print('data金额的值是:', data['amount'])
        expected = eval(case['expected'])
        row = case['case_id'] + 1

        if case['check_sql']:
            sql = 'select * from futureloan.member where id={}'.format(
                getattr(CaseData, 'member_id'))
            result = self.db.find_one(sql)
            start_amount = result['leave_amount']
            # print('执行充值前的金额是:',start_amount)
        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        res = response.json()
        print('充值-测试用例执行结果:', res)

        if case['check_sql']:
            sql = 'select * from futureloan.member where id={}'.format(
                getattr(CaseData, 'member_id'))
            result = self.db.find_one(sql)
            end_amount = result['leave_amount']
            # print('执行充值后的金额是:', end_amount)
        try:
            self.assertEqual(res['code'], expected['code'])
            # self.assertEqual(res['msg'],expected['msg'])
            if case['check_sql']:
                self.assertEqual(end_amount - start_amount,
                                 Decimal(str(data['amount'])))
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.info('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 6
0
    def test_main_stream(self, case):
        # 第一步:准备用例数据
        url = conf.get("env", "base_url") + replace_data(case["url"])
        method = case["method"]
        if case["interface"] == "register":
            # 注册接口,则随机生成一个手机号码
            CaseData.mobilephone = self.random_phone()
        data = eval(replace_data(case["data"]))
        headers = eval(conf.get("env", "headers"))

        # 判断是否是登录接口,不是登录接口则需要添加token
        if case["interface"] != "login" and case["interface"] != "register":
            headers['Authorization'] = getattr(CaseData, 'token_value')
            # headers["Authorization"] = getattr(CaseData, "token_value")
            # 在请求体中加入,时间戳和签名
            sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
            data.update(sign_info)

        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:发送请求,获取结果
        print("请求参数:", data)
        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        res = response.json()
        print("预期结果", expected)
        print("实际结果", res)
        # 发送请求后,判断是否是登陆接口
        if case["interface"].lower() == "login":
            # 提取用户id保存为类属性
            CaseData.member_id = str(jsonpath.jsonpath(res, "$..id")[0])
            token = jsonpath.jsonpath(res, "$..token")[0]
            token_type = jsonpath.jsonpath(res, "$..token_type")[0]
            # 提取token,保存为类属性
            CaseData.token_value = token_type + " " + token
            CaseData.token = token
        # 判断是否是加标的用例,如果是的则请求标id
        if case["interface"] == "add":
            CaseData.loan_id = str(jsonpath.jsonpath(res, "$..id")[0])
        # 第三步:断言(比对预期结果和实际结果)
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertIn(expected["msg"], res["msg"])
        except AssertionError as e:
            self.excel.write_excel(row=row, column=8, value="未通过")
            log.error("用例:{},执行未通过".format(case["title"]))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value="通过")
            log.info("用例:{},执行未通过".format(case["title"]))
Ejemplo n.º 7
0
    def setUp(self):
        url = conf.get('env','base_url') + '/projects/'

        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')

        CaseData.project_name = self.random_name()
        data = '{"name": "这是一个测试的项目编号#project_name#","leader": "ann","tester": "ann9186563","programmer": "小雅","publish_app": "自动化作业-应用","desc":"ann创建项目的描述"}'
        data = replace_data(data)
        data = eval(data)

        response = self.request.send_request(url=url, method='post', json=data,headers=headers)
        content = eval(response.content.decode('utf-8'))
        CaseData.project_id = str(content['id'])
Ejemplo n.º 8
0
def replace_data(s):
    r1 = r"#(.+?)#"
    while re.search(r1, s):
        # 根据是否匹配到要替换的数据,来判断要不要进入循环
        res = re.search(r1, s)
        # 匹配一个需要替换的内容 如#mobile_phone#
        data = res.group()
        # 获得需要替换的内容
        key = res.group(1)
        # 获取需要替换的字段如mobile_phone
        try:
            # s = s.replace(data, conf.get('test_data', key))
            s = re.sub(r1, conf.get('test_data', key), s, 1)
        #     根据要替换的字典,去配置文件中找对应的数据,进行替换
        except Exception as e:
            # s = s.replace(data, getattr(CaseData,key))
            s = re.sub(r1, getattr(CaseData, key), s, 1)
    #         如果配置文件找不到,报错了,则去CaseData的属性中找对应的值进行替换
    return s


# s= '{"member_id":#member_id#,"amount":1000,"loan_id=#loan_id#"}'
# r1= r"#(.+?)#"
# res = re.search(r1,s)
# # res的结果是一个match对象
# print(res)
# data = res.group()
# # data的结果是#member_id#
# print(data)
# key = res.group(1)
# # key的结果是member_id
# print(key)
Ejemplo n.º 9
0
    def setUp(self):
        url = conf.get('env', 'base_url') + '/interfaces/'

        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')

        CaseData.interface_name = self.random_name()
        data = '{ "name": "接口#interface_name#", "tester": "ann", "project_id": #pid#, "desc": "这是一个接口描述" }'
        data = replace_data(data)
        data = eval(data)

        response = self.request.send_request(url=url,
                                             method='post',
                                             json=data,
                                             headers=headers)
        content = eval(response.content.decode('utf-8'))
        CaseData.interface_id = str(content['id'])
Ejemplo n.º 10
0
    def setUpClass(cls):
        url = conf.get('env', 'base_url') + '/member/login'
        data = {
            'mobile_phone': conf.get('test_data', 'mobile_phone'),
            'pwd': conf.get('test_data', 'pwd')
        }
        headers = eval(conf.get('env', 'headers'))

        response = cls.request.send_request(url=url,
                                            json=data,
                                            headers=headers,
                                            method='post')
        res = response.json()
        token = jsonpath.jsonpath(res, '$..token')
        token_type = jsonpath.jsonpath(res, '$..token_type')
        CaseData.token = token[0]
        CaseData.token_value = token_type[0] + ' ' + token[0]
        CaseData.member_id = str(jsonpath.jsonpath(res, '$..id')[0])
Ejemplo n.º 11
0
    def test_testcases(self, case):
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')

        url = conf.get('env', 'base_url') + case['url']
        method = case['method']
        CaseData.testcase_name = self.random_name()
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])

        expected = eval(case['expected'])
        row = case['case_id'] + 1

        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        status_code = response.status_code
        print('执行接口后状态码是:', status_code)

        res = response.json()
        print('执行接口后的响应结果是:', res)

        # content = response.content.decode('utf-8')
        if status_code == 201:
            # content = eval(content)
            # print('接口成功的接口信息为:',content)
            if case['title'] == '新增测试用例成功':
                # 如果是添加成功的接口,把用例名字取出来作为excel中第二条用例的验证(第二条用例的name用的是第一条已经添加过的那个name)
                CaseData.have_testcases_name = res['name']

        try:
            self.assertEqual(status_code, expected['status_code'])
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.error('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 12
0
    def test_project(self, case):
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')

        url = conf.get('env', 'base_url') + case['url']
        method = case['method']
        CaseData.project_name = self.random_project()
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])

        expected = eval(case['expected'])
        row = case['case_id'] + 1

        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        status_code = response.status_code
        print('执行接口后状态码是:', status_code)

        res = response.json()
        print('执行接口后的响应结果是:', res)

        # content = response.content.decode('utf-8')
        # if status_code == 201:
        #     content = eval(content)
        #     print('项目成功的接口信息为:',content)

        try:
            self.assertEqual(status_code, expected['status_code'])
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.error('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 13
0
    def create_logger():
        mylog = logging.getLogger('ann')
        mylog.setLevel(conf.get('log', 'level'))

        sh = logging.StreamHandler()
        sh.setLevel(conf.get('log', 'sh_level'))

        # log_name = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + '.log'
        fh = logging.FileHandler(filename=os.path.join(
            LOG_DIR, 'py26_futureloan_apitest.log'),
                                 encoding='utf8')
        fh.setLevel(conf.get('log', 'fh_level'))

        mylog.addHandler(sh)
        mylog.addHandler(fh)

        formater = '%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s'
        fm = logging.Formatter(formater)

        sh.setFormatter(fm)
        fh.setFormatter(fm)

        return mylog
Ejemplo n.º 14
0
    def test_register(self, case):
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']

        CaseData.phone = self.random_phone()
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        print('测试用例中data的值是:', data)

        expected = eval(case['expected'])
        headers = eval(conf.get('env', 'headers'))

        row = case['case_id'] + 1

        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        res = response.json()
        print('注册-测试用例执行结果:', res)

        try:
            self.assertEqual(res['code'], expected['code'])
            # self.assertEqual(res['msg'],expected['msg'])
            sql = 'select count(*) from futureloan.member where mobile_phone={}'.format(
                getattr(CaseData, 'phone'))
            table_res = self.db.find_count(sql)
            if case['check_sql']:
                self.assertEqual(table_res, 1)
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.info('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 15
0
    def test_update(self, case):
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        # 在请求体中加入,时间戳和签名
        sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
        data.update(sign_info)
        # print('data中reg_name的值是',data['reg_name'],type(data['reg_name']))
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(CaseData, 'token_value')
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        res = response.json()
        print('更新昵称接口返回的结果:', res)
        try:
            self.assertEqual(res['code'], expected['code'])
            if case['check_sql']:
                sql = 'select * from futureloan.member where mobile_phone={}'.format(
                    conf.get('test_data', 'mobile_phone'))
                res_name = self.db.find_one(sql)['reg_name']
                # print('执行后结果昵称是:',res_name,type(res_name))
                self.assertEqual(res_name, data['reg_name'])
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.info('测试用例执行通过')
Ejemplo n.º 16
0
    def test_register(self, case):
        """

        :param case: 入参中的case指的是把cases(读取excel的数据)拆包,得到一条一条的用例
        :param CaseData.random_username 调用随机方法,生成username,放在CaseData类中,作为类属性,在replace_data方法中实施替换
        :param data=eval(case['data'] 取到excel中case['data']的类型是字符串,字符串里面是字典,通过eval识别出字符串中的python表达式,得到字典
        :param response.status_code得到响应的状态码;response.content得到byte类型的类型(使用response.content.decode('utf-8')转换),response.text得到文本形式的内容
        :return:
        """
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']

        CaseData.random_username = self.random_user()
        CaseData.random_email = self.random_email()
        case['data'] = replace_data(case['data'])
        data = eval(case['data'])

        expected = eval(case['expected'])
        row = case['case_id'] + 1

        response = self.request.send_request(url=url, method=method, json=data)
        status_code = response.status_code
        print('执行接口后状态码是:', status_code)

        res = response.json()
        print('接口响应结果是:', res)

        # content = response.content.decode('utf-8')
        # if status_code == 201:
        #     content = eval(content)
        #     print('注册成功的接口信息为:',content)

        try:
            self.assertEqual(status_code, expected['status_code'])
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.error('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 17
0
def send_email(filename, title):
    """
    发送邮件的功能函数
    :param filename: 文件的路径
    :param title:   邮件的主题
    :return:
    """
    # 第一步:连接邮箱的smtp服务器,并登录
    smtp = smtplib.SMTP_SSL(host=conf.get("email", "host"),
                            port=conf.getint("email", "port"))
    smtp.login(user=conf.get("email", "user"),
               password=conf.get("email", "pwd"))

    # 第二步:构建一封邮件
    # 创建一封多组件的邮件
    msg = MIMEMultipart()

    with open(filename, "rb") as f:
        content = f.read()
    # 创建邮件文本内容
    text_msg = MIMEText(content, _subtype="html", _charset="utf8")
    # 添加到多组件的邮件中
    msg.attach(text_msg)
    # 创建邮件的附件
    report_file = MIMEApplication(content)
    report_file.add_header('content-disposition',
                           'attachment',
                           filename=filename)
    # 将附件添加到多组件的邮件中
    msg.attach(report_file)

    # 主题
    msg["Subject"] = title
    # 发件人
    msg["From"] = conf.get("email", "from_addr")
    # 收件人
    msg["To"] = conf.get("email", "to_addr")

    # 第三步:发送邮箱
    smtp.send_message(msg,
                      from_addr=conf.get("email", "from_addr"),
                      to_addrs=conf.get("email", "to_addr"))
Ejemplo n.º 18
0
    def test_email(self, case):
        CaseData.random_email = self.random_email()
        case['url'] = replace_data(case['url'])
        url = conf.get('env', 'base_url') + case['url']
        print('检验邮箱是否注册接口的url地址是:', url)
        method = case['method']
        data = eval(case['data'])
        expected = eval(case['expected'])
        row = case['case_id'] + 1

        response = self.request.send_request(url=url,
                                             method=method,
                                             params=data)
        # res = response.json()
        status_code = response.status_code
        print('执行接口后状态码是:', status_code)

        content = response.content
        # 上面得到一个byte类型的数据b'{"email":"*****@*****.**","count":0}'
        content = content.decode('utf-8')
        # 经过decode得到一个str类型的数据'{"email":"*****@*****.**","count":0}'
        if status_code == 200:
            content = eval(content)

        try:
            self.assertEqual(status_code, expected['status_code'])
            if status_code == 200:
                self.assertEqual(content['count'], expected['count'])
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.error('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 19
0
    def test_invest(self, case):
        """
        将登录放在测试用例excel的第一行,根据接口类型,判断如果是登录,那么获取其响应结果中的token_value
        :param case:
        :return:
        """
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']

        headers = eval(conf.get('env', 'headers'))
        if case['interface'] != 'login':
            headers['Authorization'] = getattr(CaseData, 'token_value')

        case['data'] = replace_data(case['data'])
        data = eval(case['data'])
        if case['interface'] != 'login':
            sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
            data.update(sign_info)
        # 在请求体中加入,时间戳和签名

        print('测试用例中data的值是:', data)
        expected = eval(case['expected'])
        row = case['case_id'] + 1

        # 关于sql校验:需要校验投资用户可用余额减少(sql1)、需要校验流水记录表中增加了一条记录
        if case['check_sql']:
            sql1 = "select * from futureloan.member where id={}".format(
                getattr(CaseData, 'member_id'))
            start_amount = self.db.find_one(sql1)['leave_amount']
            print('执行投资前的用户余额时:', start_amount)
            sql2 = "select * from futureloan.financeLog where pay_member_id={}".format(
                getattr(CaseData, 'member_id'))
            start_sum = self.db.find_count(sql2)
            print("执行投资前流水记录表中的数量是:", start_sum)
            sql3 = "SELECT * FROM futureloan.invest WHERE member_id={} and loan_id={}".format(
                CaseData.member_id, CaseData.loan_id)
            start_invest = self.db.find_count(sql3)
            print('投资前的投资记录条数:', start_invest)

        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        res = response.json()
        print('执行接口后的结果是:', res)

        if case['interface'] == 'login':
            token_type = jsonpath.jsonpath(res, '$..token_type')[0]
            token = jsonpath.jsonpath(res, '$..token')[0]
            member_id = str(jsonpath.jsonpath(res, '$..id')[0])

            token_value = token_type + ' ' + token
            CaseData.token_value = token_value
            CaseData.member_id = member_id
            CaseData.token = token
        if case['interface'] == 'add':
            loan_id = str(jsonpath.jsonpath(res, '$..id')[0])
            CaseData.loan_id = loan_id

        if case['check_sql']:
            sql = "select * from futureloan.member where id={}".format(
                getattr(CaseData, 'member_id'))
            end_amount = self.db.find_one(sql)['leave_amount']
            print('执行投资后的用户余额时:', end_amount)
            sql2 = "select * from futureloan.financeLog where pay_member_id={}".format(
                getattr(CaseData, 'member_id'))
            end_sum = self.db.find_count(sql2)
            print("执行投资后流水记录表中的数量是:", end_sum)
            sql3 = "SELECT * FROM futureloan.invest WHERE member_id={} and loan_id={}".format(
                CaseData.member_id, CaseData.loan_id)
            end_invest = self.db.find_count(sql3)
            print('投资后的投资记录条数:', end_invest)

        try:
            self.assertEqual(res['code'], expected['code'])
            # self.assertEqual(res['msg'],expected['msg'])
            if case['check_sql']:
                self.assertEqual(start_amount - end_amount,
                                 Decimal(str(data['amount'])))
                self.assertEqual(end_sum - start_sum, 1)
                self.assertEqual(end_invest - start_invest, 1)
                # 关于sql校验:除了以上校验外,如果达到满标(即投资额=用户可用余额,那么在回款计划表中会新增一条记录)
                # if end_amount == data['amount']:
                #     sql3 = 'select * from futureloan.repayment where invest_id={}'.format(getattr(CaseData, 'member_id'))
                #     repay_amount = self.db.find_count(sql3)
                #     self.assertEqual(repay_amount,1)
                if "满标" in case["title"]:
                    # 获取当前标所有的投资记录id
                    sql4 = "SELECT id FROM futureloan.invest WHERE loan_id={}".format(
                        CaseData.loan_id)
                    invest_ids = self.db.find_all(sql4)
                    # 遍历该标所有的投资记录,id
                    for invest in invest_ids:
                        sql5 = "SELECT * FROM futureloan.repayment WHERE invest_id={}".format(
                            invest["id"])
                        # 获取当前这条投资记录,生成对应的回款
                        count = self.db.find_count(sql5)
                        # 断言查询到的条数的布尔值是否为True(0的布尔值是Flase,只要不是0条,这个断言就会通过)
                        self.assertTrue(count)
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.info('测试用例{}执行通过'.format(case['title']))
Ejemplo n.º 20
0
    def test_add(self, case):
        """
        将登录放在测试用例excel的第一行,根据接口类型,判断如果是登录,那么获取其响应结果中的token_value
        :param case:
        :return:
        """
        url = conf.get('env', 'base_url') + case['url']
        method = case['method']

        headers = eval(conf.get('env', 'headers'))

        if case['interface'] != 'login':
            headers['Authorization'] = getattr(CaseData, 'token_value')

        case['data'] = replace_data(case['data'])
        data = eval(case['data'])

        if case['interface'] != 'login':
            sign_info = HandleSign.generate_sign(getattr(CaseData, "token"))
            data.update(sign_info)
            # 在请求体中加入,时间戳和签名

        print('测试用例中data的值是:', data)
        expected = eval(case['expected'])
        row = case['case_id'] + 1

        if case['check_sql']:
            case['check_sql'] = replace_data(case['check_sql'])
            sql = case['check_sql']
            result = self.db.find_count(sql)
            start_sum = result
            print('执行添加项目前的总项目数是:', start_sum)

        response = self.request.send_request(url=url,
                                             method=method,
                                             json=data,
                                             headers=headers)
        res = response.json()
        print('执行接口后的结果是:', res)

        if case['interface'] == 'login':
            token_type = jsonpath.jsonpath(res, '$..token_type')[0]
            token = jsonpath.jsonpath(res, '$..token')[0]
            member_id = str(jsonpath.jsonpath(res, '$..id')[0])

            token_value = token_type + ' ' + token
            CaseData.token = token
            CaseData.token_value = token_value
            CaseData.member_id = member_id

        if case['check_sql']:
            case['check_sql'] = replace_data(case['check_sql'])
            sql = case['check_sql']
            result = self.db.find_count(sql)
            end_sum = result
            print('执行添加项目后的总项目数是:', end_sum)

        try:
            self.assertEqual(res['code'], expected['code'])
            # self.assertEqual(res['msg'],expected['msg'])
            if case['check_sql']:
                self.assertEqual(end_sum - start_sum, 1)
        except Exception as e:
            self.excel.write_excel(row=row, column=8, value='未通过')
            log.error('测试用例{}执行未通过'.format(case['title']))
            log.exception(e)
            raise e
        else:
            self.excel.write_excel(row=row, column=8, value='通过')
            log.info('测试用例{}执行通过'.format(case['title']))