示例#1
0
    def test_audit(self, item):
        url = os.path.join(handle_conf.Conf.get("env", "url")) + item["url"]
        headers = eval(handle_conf.Conf.get("env", "headers"))
        headers["Authorization"] = self.admin_token
        method = item["method"]
        item["data"] = handle_data.replace_data(item['data'], Test_Aduit)
        params = eval(item["data"])
        expected = eval(item["expected"])
        case_id = item["case_id"] + 1

        response = requests.request(method=method,
                                    url=url,
                                    headers=headers,
                                    json=params)
        res = response.json()
        print("预期结果:{}0".format(expected))
        print("实际结果:{}".format(res))
        try:
            self.assertEqual(res["code"], expected["code"])
            self.assertEqual(res["msg"], expected["msg"])
            if item["check_sql"]:
                status = handle_db.database_info.find_data(
                    item["check_sql"].format(params["loan_id"]))[0]
                self.assertEqual(expected["status"], status["status"])
        except AssertionError as e:
            handle_logs.log.error("未通过,记录信息为{}".format(item["title"]))
            handle_logs.log.exception(e)
            self.case_file.write_case(row=case_id, coulmn=8, value="失败")
            raise e

        else:
            handle_logs.log.info("通过,记录信息为{}".format(item["title"]))
            self.case_file.write_case(row=case_id, coulmn=8, value="成功")
示例#2
0
    def test_login(self, item):
        #准备用例数据
        params = eval(replace_data(item['data'], longin))
        print(params)
        # params = eval(item["data"])
        url = conf.get('url', 'url') + item['url']
        method = item['method']
        title = item['title']
        expected = item['expected']
        response = requests.request(method=method, url=url, json=params)
        res = response.json()
        print('实际结果:{}'.format(res))
        print('预期结果:{}'.format(expected))

        try:
            self.assertEqual(str(expected), jsonpath(res, '$.statusCode')[0])
        except AssertionError as e:
            log.error('{}用例执行失败'.format(item['title']))
            self.excel.write_data(row=item['case_id'] + 1,
                                  column=7,
                                  value='失败')
            raise e
        else:
            log.error('{}用例执行成功'.format(item['title']))
            self.excel.write_data(row=item['case_id'] + 1,
                                  column=7,
                                  value='成功')
        try:
            if 'token' in res['data']:
                longin.token = jsonpath(res, '$..token')[0]

        except:
            pass
    def test_info(self, item):
        # 请求接口
        url = conf.get('env', 'base_url') + replace_data(item['url'], TestInfo)
        # 请求方法
        method = item['method']
        # 请求头
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = self.token
        # 预期结果
        expected = eval(item['expected'])
        # 请求接口获得实际结果
        response = requests.request(method=method, url=url, headers=headers)
        res = response.json()

        print('预计结果:', expected)
        print('实际结果:', res)

        # 断言
        try:
            self.assertEqual(res['code'], expected['code'])
            self.assertEqual(res['code'], expected['code'])
        except AssertionError as e:
            log.exception(e)
            log.error('用例{},执行未通过'.format(item['title']))
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='未通过')
            raise e
        else:
            log.info('用例{},执行通过'.format(item['title']))
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='通过')
示例#4
0
 def test_login(self, item):
     # 第一步:准备用例数据
     # 接口地址
     url = conf.get("env", "base_url") + item["url"]
     # 请求头
     headers = eval(conf.get("env", "headers"))
     # 请求参数
     item["data"] = replace_data(item["data"], TestLogin)
     params = eval(item["data"])
     # 预取结果
     expected = eval(item["expected"])
     # 请求方法
     method = item["method"]
     # 第二步:调用接口,获取实际结果
     response = requests.request(method,
                                 url=url,
                                 json=params,
                                 headers=headers)
     res = response.json()
     print("预期结果:", expected)
     print("实际结果:", response.text)
     # 第三步:断言
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
     except AssertionError as e:
         log.error("用例{},执行未通过".format(item["title"]))
         log.exception(e)
         raise e
     else:
         log.info("用例{},执行通过".format(item["title"]))
示例#5
0
    def test_add(self, item):
        url = handle_conf.Conf.get("env", "url") + item["url"]
        headers = eval(handle_conf.Conf.get("env" , "headers"))
        headers["Authorization"] = self.token
        case_id = item["case_id"] + 1
        item["data"] = handle_data.replace_data(item["data"], Add)
        params = eval(item["data"])
        expected = eval(item['expected'])
        method = item["method"]

        response = requests.request(method=method, token=self.token, headers=headers, url=url, json=params)
        res = response.json()
        print("预期结果:{}0".format(expected))
        print("实际结果:{}".format(res))
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected['msg'], res['msg'])
            if item["check_sql"]:
                info = handle_db.database_info.find_data(item["check_sql"].format(self.uesr_id))
                self.assertTrue(info)
        except AssertionError as e:
            handle_logs.log.error("失败,记录信息{}".format(item["title"]))
            handle_logs.log.exception(e)
            self.file_name.write_case(row=case_id, coulmn=8, value="失败")
            raise e
        else:
            handle_logs.log.info("成功,记录信息为{}".format(item["title"]))
            self.file_name.write_case(row=case_id, coulmn=8, value="成功")
示例#6
0
    def test_login(self, item):
        case_id = item["case_id"] + 1
        method = item["method"]
        url = handle_conf.Conf.get("env", "url") + item["url"]
        item["data"] = handle_data.replace_data(item["data"], TestLogin)
        params = eval(item["data"])
        expected = eval(item["expected"])
        headers = eval(handle_conf.Conf.get("env", "headers"))

        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=headers)
        res = response.json()
        print("预期结果:{}".format(expected))
        print("实际结果:{}".format(res))
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

        except AssertionError as e:
            handle_logs.log.error("用例{}未通过".format(item["title"]))
            handle_logs.log.exception(e)
            self.file_name.write_case(row=case_id, coulmn=8, value="失败")
            raise e

        else:
            handle_logs.log.info("用例{}通过".format(item["title"]))
            self.file_name.write_case(row=case_id, coulmn=8, value="成功")
示例#7
0
 def test_audit(self, item):
     # 第一步:准备用例数据
     url = conf.get("env", "base_url") + item["url"]
     headers = eval(conf.get("env", "headers"))
     headers["Authorization"] = self.admin_token
     # 替换用例参数
     item["data"] = replace_data(item["data"], TestAudit)
     params = eval(item["data"])
     # 请求方法
     method = item["method"]
     # 预期结果
     expected = eval(item["expected"])
     # 第二步:请求接口,获取实际返回的结果
     response = requests.request(url=url, method=method, json=params, headers=headers)
     res = response.json()
     # 第三步:断言
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
         if item["title"] == "审核通过":
             TestAudit.pass_loan_id = params["loan_id"]
     except AssertionError as e:
         log.error("用例{},执行未通过".format(item["title"]))
         log.exception(e)
         self.excel.write_excel(row=item['case_id'] + 1, column=8, value='未通过')
         raise e
     else:
         log.info("用例{},执行通过".format(item["title"]))
         self.excel.write_excel(row=item['case_id'] + 1, column=8, value='通过')
示例#8
0
    def test_add(self, item):
        # 第一步:获取参数
        case_id = item["case_id"]
        # 请求的url
        url = conf.get("env", "base_url") + item["url"]
        # 请求的方法
        method = item["method"]
        # 请求的headers
        headers = eval(conf.get("env", "headers"))
        if item["interface"] == "add":
            headers["Authorization"] = self.token
        # 请求的参数
        item["data"] = replace_data(item["data"], TestAdd)
        params = eval(item["data"])
        # 预期的结果
        expected = eval(item["expected"])
        # 判断执行前的数据库状态
        sql = item["check_sql"]
        # 第二步 发送请求
        response = requests.request(url=url,
                                    method=method,
                                    json=params,
                                    headers=headers)
        res = response.json()
        if item["interface"] == "login":
            # 提取token和用户id保存为类属性
            TestAdd.token = "Bearer" + " " + jsonpath(res, "$..token")[0]
            TestAdd.member_id = jsonpath(res, "$..id")[0]

        print("预期结果:", expected)
        print("实际结果:", res)
        try:
            self.assertEqual(res["code"], expected["code"])
            self.assertEqual(res["msg"], expected["msg"])
            if item["interface"] == "add":
                if sql:
                    sql = replace_data(sql, TestAdd)
                    res = db.find_data(sql)
                self.assertTrue(res)
        except AssertionError as e:
            log.error("用例执行失败:{}".format(item["title"]))
            log.exception(e)
            raise e
            self.excel.write_data(row=case_id + 1, column=8, value="失败")
        else:
            log.info("用例执行通过:{}".format(item["title"]))
            self.excel.write_data(row=case_id + 1, column=8, value="通过")
示例#9
0
    def test_invest(self, item):
        url = handle_conf.Conf.get("env", "url") + item["url"]
        headers = eval(handle_conf.Conf.get('env', 'headers'))
        headers["Authorization"] = self.invest_token
        item["data"] = handle_data.replace_data(item["data"], Test_Invest)
        params = eval(item["data"])
        method = item['method']
        expected = eval(item["expected"])
        case_id = item["case_id "] + 1
        if item["check_sql"]:
            """查询原始表该投资用户在表内的投资记录"""
            sql1 = "SELECT * FROM futureloan.invest WHERE member_id ={} and loan_id ={}".format(
                self.invest_id, self.loan_id)
            """余额"""
            sql2 = "SELECT * FROM futureloan.member WHERE member_id ={}".format(
                self.invest_id)
            """流水记录"""
            sql3 = "SELECT * FROM futureloan.financelog WHERE pay_member_id = {}".format(
                self.invest_id)

            f_invest = len(handle_db.database_info.find_data(sql1))
            f_amount = handle_db.database_info.find_data(sql2)[0]["amount"]
            f_financelog = len(handle_db.database_info.find_data(sql3))
        response = requests.request(method=method,
                                    url=url,
                                    headers=headers,
                                    json=params)
        res = response.json()

        print("预期结果:{}0".format(expected))
        print("实际结果:{}".format(res))
        try:
            self.assertEqual(expected['code'], res["code"])
            self.assertEqual(expected['msg'], res['msg'])
            if item["check_sql"]:
                sql1 = "SELECT * FROM futureloan.invest WHERE member_id ={} and loan_id ={}".format(
                    self.invest_id, self.loan_id)
                sql2 = "SELECT * FROM futureloan.member WHERE member_id ={}".format(
                    self.invest_id)
                sql3 = "SELECT * FROM futureloan.financelog WHERE pay_member_id = {}".format(
                    self.invest_id)

                s_invest = len(handle_db.database_info.find_data(sql1))
                s_amount = handle_db.database_info.find_data(sql2)[0]["amount"]
                s_financelog = len(handle_db.database_info.find_data(sql3))

                self.assertEqual(s_invest - f_invest, 1)
                self.assertEqual(s_amount - f_amount, params["amount"])
                self.assertEqual(s_financelog - f_financelog, 1)

        except AssertionError as e:
            handle_logs.log.error("失败,记录信息为{}".format(item['title']))
            handle_logs.log.exception(e)
            self.case_file.write_case(row=case_id, coulmn=8, value="失败")

        else:
            handle_logs.log.info("成功,记录信息为{}".format(item['title']))
            self.case_file.write_case(row=case_id, coulmn=8, value="成功")
 def test_newpay(self, item):
     """设置交易密码"""
     # 准备用例数据
     url = conf.get('url', 'url') + item['url']
     # 准备数据
     params = eval(replace_data(item['data'], test_newpaypd))
     print(params)
     # 获取请求方式
     method = item['method']
     # 获取实际结果
     response = requests.request(method=method, url=url, json=params)
     res = response.json()
     print('实际结果:{}'.format(res))
示例#11
0
    def test_add(self, item):
        # 请求接口的url
        url = conf.get('env', 'base_url') + item['url']
        # 请求参数
        params = eval(replace_data(item['data'], TestAddV3))

        # 请求参数中添加 timestamp 和sign
        crypt_info = HandleSign.generate_sign(self.token_value)
        params['timestamp'] = crypt_info['timestamp']
        params['sign'] = crypt_info['sign']

        # 请求头
        # headers = eval(conf.get('env', 'headers'))

        # 请求头 V3
        headers = eval(conf.get('env', 'headersV3'))

        headers['Authorization'] = self.token
        # 请求方法
        method = item['method']
        # 预期结果
        expected = eval(item['expected'])
        # 请求接口获得请求结果
        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=headers)
        res = response.json()
        print('预期结果:', expected)
        print('实际结果:', res)
        # 断言
        try:
            self.assertEqual(res['code'], expected['code'])
            self.assertEqual(res['code'], expected['code'])
            if item['check_sql']:
                result = db.find_data(
                    (item['check_sql']).format(jsonpath(res, '$..id')[0]))
                self.assertTrue(result)
        except AssertionError as e:
            log.error('用例{},执行失败'.format(item['title']))
            log.exception(e)
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='未通过')
            raise e
        else:
            log.info('用例{},执行成功'.format(item['title']))
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='通过')
示例#12
0
    def test_audit(self, item):
        # 第一步:准备用例数据
        url = conf.get("env", "base_url") + item["url"]
        # 请求头V2
        # headers = eval(conf.get("env", "headers"))

        # 请求头v3
        headers = eval(conf.get('env', 'headersV3'))
        headers["Authorization"] = self.admin_token

        # 替换用例参数
        item["data"] = replace_data(item["data"], TestAuditV3)
        params = eval(item["data"])

        # 请求参数添加timestamp和sign
        crypt_info = HandleSign.generate_sign(self.admin_token_value)
        params['timestamp'] = crypt_info['timestamp']
        params['sign'] = crypt_info['sign']

        # 请求方法
        method = item["method"]
        # 预期结果
        expected = eval(item["expected"])
        # 第二步:请求接口,获取实际返回的结果
        response = requests.request(url=url,
                                    method=method,
                                    json=params,
                                    headers=headers)
        res = response.json()
        print('预期结果:', expected)
        print('实际结果:', res)
        # 第三步:断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if item["title"] == "审核通过":
                TestAuditV3.pass_loan_id = params["loan_id"]
        except AssertionError as e:
            log.error("用例{},执行未通过".format(item["title"]))
            log.exception(e)
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='未通过')
            raise e
        else:
            log.info("用例{},执行通过".format(item["title"]))
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='通过')
示例#13
0
    def test_recharge(self, item):
        case_id = item["case_id"]
        # 第一步:准备数据
        url = conf.get("env", "base_url") + item["url"]
        # 请求参数
        item["data"] = replace_data(item["data"],TestRecharge)
        params = eval(item["data"])
        # 请求头
        headers = eval(conf.get("env", "headers"))
        # 请求头中要添加token
        headers["Authorization"] = self.token
        # 请求方法
        method = item["method"]
        # 预期结果
        expected = eval(item["expected"])

        sql = item["check_sql"]
        if sql:
            s_amount = db.find_data(sql.format(self.member_id))
            s_money = s_amount[0]["leave_amount"]
        # 第二步:请求接口,获取结果
        response = requests.request(url=url, method=method, json=params, headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)


        # 第三步:断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if sql:
                e_amount = db.find_data(sql.format(self.member_id))
                e_money = e_amount[0]["leave_amount"]
                self.assertEqual(float(e_money - s_money), params["amount"])

        except AssertionError as e:
            log.error("用例{},执行未通过".format(item["title"]))
            self.excel.write_data(row=case_id +1,column=8,value="失败")
            log.exception(e)
            raise e
        else:
            log.info("用例{},执行通过".format(item["title"]))
            self.excel.write_data(row=case_id + 1, column=8, value="通过")
示例#14
0
    def test_testcases(self, item):
        # 1. 准备测试数据
        url = conf.get("env", "base_url") + item["url"]
        method = item["method"]

        # 替换name
        if "#name#" in item["data"]:
            item["data"] = item["data"].replace("#name#",username())

        item["data"] = replace_data(item["data"],TestTestcases)

        params = eval(item["data"])
        headers = {"Authorization": "JWT" + " " + self.token}

        expected = eval(item["expected"])


        # 2. 请求接口,获取实际结果
        res = requests.request(method, url, json=params, headers=headers).json()

        # 接口请求后,pass_name设置为类属性
        if item["title"] == "正常创建用例":
            TestTestcases.pass_name = params["name"]

            # 替换掉expect里面的name
            expected["name"] = TestTestcases.pass_name

        print("-------当前执行的用例是:{}----------".format(item["title"]))
        print("请求参数:", params)
        print("预期结果:", expected)
        print("实际结果:", res)
        print("===============执行结束===============\n")
        # 3. 断言
        try:
            assert_dict_item(expected, res)
        except AssertionError as e:
            log.exception(e)
            log.error("--测试用例:{}--执行失败".format(item["title"]))
            raise e
        else:
            log.info("--测试用例:{}--执行通过".format(item["title"]))
示例#15
0
    def test_recharge(self, item):
        url = handle_conf.Conf.get("env", "url") + item["url"]
        method = item['method']
        headers = eval(handle_conf.Conf.get("env", "headers"))
        headers["Authorization"] = self.token
        item["data"] = handle_data.replace_data(item["data"], Test_Recharge)
        params = eval(item["data"])
        expected = eval(item["expected"])
        case_id = item["case_id"] + 1
        if item["check_sql"]:
            old_amount = handle_db.database_info.find_data(
                item["check_sql"].format(self.user_id))
            old_money = old_amount[0]["leave_amount"]

        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=headers,
                                    token=self.token)
        res = response.json()
        print("预期结果:{}0".format(expected))
        print("实际结果:{}".format(res))
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res['msg'])
            if item["check_sql"]:
                new_amount = handle_db.database_info.find_data(
                    item["check_sql"].format(self.user_id))
                new_money = new_amount[0]["leave_amount"]
                self.assertEqual(float(new_money - old_money),
                                 params["amount"])
        except AssertionError as e:
            handle_logs.log.error("失败,信息为{}".format(item['title']))
            handle_logs.log.exception(e)
            self.file_name.write_case(row=case_id, coulmn=8, value="失败")
            raise e

        else:
            handle_logs.log.info("成功,信息为{}".format(item["title"]))
            self.file_name.write_case(row=case_id, coulmn=8, value="成功")
示例#16
0
    def test_audit(self, item):
        # 第一步:准备用例数据
        url = conf.get("env", "base_url") + item["url"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.admin_token
        # 替换用例参数
        item["data"] = replace_data(item["data"], TestAudit)
        params = eval(item["data"])
        # 请求方法
        method = item["method"]
        # 预期结果
        expected = eval(item["expected"])
        # 第二步:请求接口,获取实际返回的结果
        response = requests.request(url=url,
                                    method=method,
                                    json=params,
                                    headers=headers)
        res = response.json()
        # 第三步:断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if item["title"] == "审核通过":
                TestAudit.pass_loan_id = params["loan_id"]
            # 进行数据库校验
            if item["check_sql"]:
                sql = item["check_sql"].format(params["loan_id"])
                result = db.find_data(sql)[0]
                self.assertEqual(expected["status"], result["status"])

        except AssertionError as e:
            log.error("用例{},执行未通过".format(item["title"]))
            log.exception(e)
            raise e
        else:
            log.info("用例{},执行通过".format(item["title"]))
示例#17
0
    def test_withdraw(self, item):
        # 第一步:准备数据
        case_id = item["case_id"]
        # 请求地址
        url = conf.get("env", "base_url") + item["url"]
        item["data"] = replace_data(item["data"], TestWithdraw)
        params = eval(item["data"])
        method = item["method"]
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.token
        expected = eval(item["expected"])
        sql = item["check_sql"]
        if sql:
            s_amount = db.find_data(sql.format(self.member_id))
            s_money = s_amount[0]["leave_amount"]

        response = requests.request(url=url,
                                    method=method,
                                    json=params,
                                    headers=headers)
        res = response.json()
        # 第三步 :断言
        try:
            self.assertEqual(res["code"], expected["code"])
            self.assertEqual(res["msg"], expected["msg"])
            if sql:
                e_amount = db.find_data(sql.format(self.member_id))
                e_money = s_amount[0]["leave_amount"]
                self.assertEqual(float(s_money - e_money), params["amount"])
        except AssertionError as e:
            log.error("用例执行失败:{}".format(item["title"]))
            self.excel.write_data(row=case_id + 1, column=8, value="失败")
            raise e
        else:
            log.info("用例执行通过:{}".format(item["title"]))
            self.excel.write_data(row=case_id + 1, column=8, value="通过")
示例#18
0
 def test_audit(self,item):
     #第一步:请求参数
     case_id = item["case_id"]
     url = conf.get("env", "base_url") + item["url"]
     method = item["method"]
     headers = eval(conf.get("env","headers"))
     headers["Authorization"] = self.admin_token
     print(headers)
     item["data"] = replace_data(item["data"],TestAudit)
     params = eval(item["data"])
     expected = eval(item["expected"])
     # 数据库的校验
     sql = item["check_sql"]
     #第二步:发送请求
     response = requests.request(url= url,method=method,json=params,headers=headers)
     res = response.json()
     print("实际结果",res)
     print("预期结果",expected)
     #第三步: 断言
     try:
         self.assertEqual(res["code"], expected["code"])
         self.assertEqual(res["msg"], expected["msg"])
         if item["title"] == "审核通过":
             TestAudit.pass_project_id = params["loan_id"]
         if sql:
             res = db.find_data(sql.format(self.project_id))
             status = res[0]["status"]
             self.assertEqual(status,expected["status"])
     except AssertionError as e:
         log.error("用例执行失败:{}".format(item["title"]))
         log.exception(e)
         self.excel_audit.write_data(row=case_id + 1, column=8, value="失败")
         raise e
     else:
         log.info("用例执行通过:{}".format(item["title"]))
         self.excel_audit.write_data(row=case_id + 1, column=8, value="通过")
示例#19
0
    def test_add(self, test_data_cases):
        # 第一步:准备用例数据
        # (1)获取url
        url = conf.get_str("env", "url_ip") + test_data_cases["url"]
        # (2)获取数据
        test_data_cases["data"] = replace_data(
            test_data_cases["data"])  # 调用replace_data方法
        # (3)数据转换
        data = eval(test_data_cases["data"])
        # (4)预期结果
        expected = eval(test_data_cases["expected"])  # excel是字典类型,需要转换一下
        # (5)请求方法
        method = test_data_cases["method"]
        # (6)用例所在的行
        row = test_data_cases["case_id"] + 1
        # (7)请求头
        headers = eval(conf.get_str("env", "headers"))
        if test_data_cases["interface"] != "login":
            # 如果不是token,需要添加请求头
            headers["Authorization"] = getattr(TestData,
                                               "token_data")  # 调用保存在临时变量的类中
        #先判断check_sql是否有数据
        if test_data_cases["check_sql"]:
            sql = replace_data(
                test_data_cases["check_sql"])  #先获取check_sql数据,在进行替换
            #执行sql语句
            s_loan_num = self.db.count(sql)  #得到加标前项目的条数

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

        # 判断是否是登录用例,是的话,则提取token
        if test_data_cases["interface"] == "login":
            # 如果是登录的用例,提取对应的token
            token_type = jsonpath.jsonpath(result, "$..token_type")[0]
            token = jsonpath.jsonpath(result, "$..token")[0]
            token_data = token_type + " " + token
            # 通过setattr方法保存到TestData类里面
            setattr(TestData, "token_data", token_data)
            # 提取member_id
            admin_member_id = jsonpath.jsonpath(result, "$..id")[0]
            # 通过setattr方法保存到TestData类里面
            setattr(TestData, "admin_member_id",
                    str(admin_member_id))  # 存类属性的时候,需要与excel中的参数名一致

        # 第三步:比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual(expected["msg"], result["msg"])
            # 加标后,项目的条数
            # 先判断check_sql是否有数据
            if test_data_cases["check_sql"]:
                sql = replace_data(
                    test_data_cases["check_sql"])  # 先获取check_sql数据,在进行替换
                # 执行sql语句
                end_loan_num = self.db.count(sql)  # 得到加标前项目的条数
                self.assertEqual(end_loan_num - s_loan_num, 1)
        except AssertionError as e:
            self.excel.write_data(row=row, column=8,
                                  value="未通过")  # 可以把列(column)放在配置文件里面
            # 记录没有通过的日志
            my_log.info("用例:{}------>执行未通过".format(test_data_cases["title"]))
            # 在没有通过的时候,使用print会打印在测试报告中
            print("预期结果:{}".format(expected))
            print("实际结果:{}".format(result))
            # 在没有通过的时候,将print输出到日志里面
            my_log.info("预期结果:{}".format(expected))
            my_log.info("实际结果:{}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8,
                                  value="通过")  # 可以把列(column)放在配置文件里面
            # 记录通过的日志
            my_log.info("用例:{}------>执行通过".format(test_data_cases["title"]))
示例#20
0
    def test_withdraw(self, item):
        """测试提现接口的方法"""
        # 请求接口
        url = conf.get('env', 'base_url') + item['url']
        # 请求参数
        # if '#member_id#' in item['data']:
        #     item['data'] = item['data'].replace('#member_id#', str(self.member_id))
        # params = eval(item['data'])
        params = eval(replace_data(item['data'], TestWithdrawV3))

        # 请求参数中添加 timestamp 和 sign
        crypt_info = HandleSign.generate_sign(self.token_value)
        params['timestamp'] = crypt_info['timestamp']
        params['sign'] = crypt_info['sign']

        # 请求头v2
        # headers = eval(conf.get('env', 'headers'))

        # 请求头v3
        headers = eval(conf.get('env', 'headersV3'))

        headers['Authorization'] = self.token
        method = item['method']

        # 获取数据库中的提现之前的余额
        sql = item['check_sql']
        if sql:
            s_amount = db.find_data(sql.format(
                self.member_id))[0]['leave_amount']

        # 预期结果
        expected = eval(item['expected'])

        # 请求参数获得实际结果
        response = requests.request(method=method,
                                    url=url,
                                    headers=headers,
                                    json=params)
        res = response.json()
        print('预期结果:', expected)
        print('实际结果:', res)

        # 断言结果
        try:
            if sql:
                e_amount = db.find_data(sql.format(
                    self.member_id))[0]['leave_amount']
                self.assertTrue(float(s_amount - e_amount),
                                jsonpath(res, '$..leave_amount')[0])
            self.assertEqual(jsonpath(res, '$.code')[0], expected['code'])
            self.assertEqual(jsonpath(res, '$.msg')[0], expected['msg'])
        except AssertionError as e:
            log.error('用例{}:执行失败'.format(item['title']))
            log.exception(e)
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='未通过')
            raise e
        else:
            log.info('用例{}:执行通过'.format(item['title']))
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='通过')
    def test_recharge(self, test_data_cases):
        # 第一步:准备用例数据
        # 备注:列表、字典方式存储的,excel读取出来是字符串。数值类型,读取出来是数值类型的,字符串类型,读取出来是字符串类型。
        # ①拼接完整的接口地址
        url = conf.get_str("env", "url_ip") + test_data_cases["url"]
        # ②请求的方法
        method = test_data_cases["method"]

        # ③请求参数
        # 判断是否有用户id需要替换
        # if "#member_id#" in test_data_cases["data"]:
        #     # 进行替换
        #     test_data_cases["data"] = test_data_cases["data"].replace("#member_id#",
        #                                                               self.member_id)  # 替换完后需要接收,不然没有实质的替换
        test_data_cases["data"] = replace_data(
            test_data_cases["data"])  #调用replace_data方法
        data = eval(test_data_cases["data"])

        # ④请求头
        headers = eval(conf.get_str("env", "headers"))
        # 添加鉴权
        # headers["Authorization"] = self.token_data
        # 从TestData类里面获取token_data属性:两种方法
        # headers["Authorization"] = TestData.token_data#方法一:直接从TestData类里面获取token_data属性
        headers["Authorization"] = getattr(
            TestData, "token_data")  # 方法二:用getattr获取TestData类里面获取token_data属性
        # ⑤预期结果
        expected = eval(test_data_cases["expected"])
        # ⑥该用例在表单中所在行
        row = test_data_cases["case_id"] + 1

        # 第二步:发送请求到接口,获取实际结果
        if test_data_cases[
                "check_sql"]:  # 先判断用例里面check_sql字段是否有数据,如果有数据,说明需要进行数据库校验
            sql = test_data_cases["check_sql"].format(user)
            # 获取充值之前的余额
            start_money = self.db.get_one(sql)[0]

        response = HandleRequest().send(url=url,
                                        method=method,
                                        json=data,
                                        headers=headers)
        result = response.json()

        # 第三步:比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual(expected["msg"], result["msg"])
            # 充值后,进行数据库校验
            if test_data_cases["check_sql"]:
                sql = test_data_cases["check_sql"].format(user)
                # 获取充值之后的余额
                end_money = self.db.get_one(sql)[0]
                # 获取请求参数里面的充值金额
                recharge_money = decimal.Decimal(str(data["amount"]))
                my_log.info("充值之前金额为:{}\n,充值金额为:{}\n,充值之后金额为:{}\n".format(
                    start_money, recharge_money, end_money))
                # 进行断言
                self.assertEqual(recharge_money, end_money - start_money)
        except AssertionError as e:
            self.excel.write_data(row=row, column=8,
                                  value="未通过")  # 可以把列(column)放在配置文件里面
            # 记录没有通过的日志
            my_log.info("用例:{}------>执行未通过".format(test_data_cases["title"]))
            # 在没有通过的时候,使用print会打印在测试报告中
            print("预期结果:{}".format(expected))
            print("实际结果:{}".format(result))
            # 在没有通过的时候,将print输出到日志里面
            my_log.info("预期结果:{}".format(expected))
            my_log.info("实际结果:{}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8,
                                  value="通过")  # 可以把列(column)放在配置文件里面
            # 记录通过的日志
            my_log.info("用例:{}------>执行通过".format(test_data_cases["title"]))
    def test_invest(self, item):
        """执行投资的用例"""
        # 第一步:准备用例数据
        url = conf.get("env", "base_url") + item["url"]
        params = eval(replace_data(item["data"], TestInvest))
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.invest_token
        method = item["method"]
        expected = eval(item["expected"])
        # 用例执行之前查询sql
        if item["check_sql"]:
            # 查询投资表记录
            sql1 = "SELECT * FROM futureloan.invest WHERE member_id={} and loan_id={}".format(
                self.invest_member_id, self.loan_id)
            # 查询用户余额
            sql2 = "SELECT leave_amount FROM futureloan.member where id={}".format(
                self.invest_member_id)
            # 查询流水记录
            sql3 = "SELECT * FROM futureloan.financelog WHERE pay_member_id={}".format(
                self.invest_member_id)
            # 查询
            # 用例执行之前投资记录的条数
            s_invest = len(db.find_data(sql1))
            # 用例执行之前投资用户的余额
            s_amount = db.find_data(sql2)[0]["leave_amount"]
            # 用例执行之前流水记录表用户的的流水记录条数
            s_financelog = len(db.find_data(sql3))

        # 第二步:请求接口,获取实际结果
        response = requests.request(url=url,
                                    method=method,
                                    headers=headers,
                                    json=params)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", response.text)
        # 第三步:断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 用例执行之前查询sql
            if item["check_sql"]:
                # 查询投资表记录
                sql1 = "SELECT * FROM futureloan.invest WHERE member_id={} and loan_id={}".format(
                    self.invest_member_id, self.loan_id)
                # 查询用户余额
                sql2 = "SELECT leave_amount FROM futureloan.member where id={}".format(
                    self.invest_member_id)
                # 查询流水记录
                sql3 = "SELECT * FROM futureloan.financelog WHERE pay_member_id={}".format(
                    self.invest_member_id)
                # 查询
                # 用例执行之后投资记录的条数
                e_invest = len(db.find_data(sql1))
                # 用例执行之后投资用户的余额
                e_amount = db.find_data(sql2)[0]["leave_amount"]
                # 用例执行之后流水记录表用户的的流水记录条数
                e_financelog = len(db.find_data(sql3))
                # 断言比对
                # 1、比对执行前后投资表记录数量是否+1
                self.assertEqual(1, e_invest - s_invest)
                # 2、对比用户余额
                self.assertEqual(params["amount"], s_amount - e_amount)
                # 3、比对执行前后流水记录表记录数量是否+1
                self.assertEqual(1, e_financelog - s_financelog)

        except AssertionError as e:
            log.error("用例{},执行未通过".format(item["title"]))
            log.exception(e)
            raise e
        else:
            log.info("用例{},执行通过".format(item["title"]))
    def test_recharge(self, item):
        """充值接口测试用例方法"""

        # 请求头v2(配置文件中获取的为str类型)
        # headers = eval(conf.get('env', 'headers'))

        # 请求头为v3
        headers = eval(conf.get('env', 'headersV3'))

        # 将 token 字段添加到请求头中
        headers["Authorization"] = self.token

        # 请求参数
        """参数化 member_id 开始"""
        # if '#member_id#' in item['data']:
        #     # 将替换 #member_id# self.member_id
        #     item['data'] = item['data'].replace('#member_id#', str(self.member_id))
        # params = eval(item['data'])
        params = eval(replace_data(item['data'], TestRechargeV3))
        """参数化 member_id 结束"""

        # 获取时间戳和sign值,添加到请求参数中
        cryto_info = HandleSign.generate_sign(self.token_value)
        params['timestamp'] = cryto_info['timestamp']
        params['sign'] = cryto_info['sign']

        # 请求方法
        method = item['method']
        # 请求接口
        recharge_url = conf.get('env', 'base_url') + item['url']
        # 预期结果
        expected = eval(item['expected'])

        # 获取充值前数据库中的金额
        sql = item['check_sql']
        if sql:
            start_amount = db.find_data(sql.format(
                self.member_id))[0]['leave_amount']

        # 实际结果
        response = requests.request(method=method,
                                    url=recharge_url,
                                    json=params,
                                    headers=headers)
        res = response.json()

        print('预期结果:', expected)
        print('实际结果:', res)

        try:
            # 将充值前后的金额之差,与充值的金额比较,相等则通过,不等则失败
            if sql:
                # 获取充值后数据库中的金额
                end_amount = db.find_data(sql.format(
                    self.member_id))[0]['leave_amount']
                # 断言前后数据库中数值的变化和实际传入参数的大小是否一致
                self.assertEqual(float(end_amount - start_amount),
                                 eval(item['data'])['amount'])

            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])

        except AssertionError as e:
            log.error("用例{},执行未通过".format(item["title"]))
            self.excel.write_excel(row=(item['case_id'] + 1),
                                   column=8,
                                   value='未通过')
            log.exception(e)
            raise e
        else:
            log.info("用例{},执行通过".format(item["title"]))
            self.excel.write_excel(row=(item['case_id'] + 1),
                                   column=8,
                                   value='通过')
示例#24
0
    def test_invest(self, case):
        '''投资用例'''
        headers = eval(conf.get('env', 'headers'))
        # 如果不是登陆请求,则添加一个token
        if case['interface'] != 'login':
            headers['Authorization'] = getattr(EnvData, 'token')

        url = conf.get('env', 'BASE_URL') + case['url']
        method = case['method']
        # case['data']=replace_data(case['data'])
        # print(case['data'])
        data = eval(replace_data(case['data']))
        expected = eval(case['expected'])
        row = case['case_id'] + 1

        if case['check_sql']:
            sql1 = 'select * from futureloan.invest where member_id= #member_id#;'
            start_invest_count = self.db.count(replace_data(sql1))

            sql2 = 'select leave_amount from futureloan.member where id= #member_id#;'
            start_leave_amount = self.db.find_one(
                replace_data(sql2))['leave_amount']

            sql3 = 'select * from futureloan.financelog where pay_member_id= #member_id#;'
            start_financelog_count = self.db.count(replace_data(sql3))

        response = request(method=method, json=data, url=url, headers=headers)
        res = response.json()

        # 如果是登陆接口,则提取用户Id+token
        if case['interface'] == 'login':
            member_id = str(jsonpath(res, '$..id')[0])
            token = 'Bearer ' + jsonpath(res, '$..token')[0]
            setattr(EnvData, 'member_id', member_id)
            setattr(EnvData, 'token', token)

        # 如果是加标接口,则提取标Id
        if case['interface'] == 'add':
            loan_id = str(jsonpath(res, '$..id')[0])
            setattr(EnvData, 'loan_id', loan_id)
            print(getattr(EnvData, 'loan_id'))

        if case['check_sql']:
            sql1 = 'select * from futureloan.invest where member_id= #member_id#;'
            end_invest_count = self.db.count(replace_data(sql1))

            sql2 = 'select leave_amount from futureloan.member where id= #member_id#;'
            end_leave_amount = self.db.find_one(
                replace_data(sql2))['leave_amount']

            sql3 = 'select * from futureloan.financelog where pay_member_id= #member_id#;'
            end_financelog_count = self.db.count(replace_data(sql3))

        try:
            self.assertEqual(res['code'], expected['code'])
            self.assertEqual(res['msg'], expected['msg'])
            # 判断是否需要进行sql校验
            if case['check_sql']:
                self.assertEquals(1, end_invest_count - start_invest_count)
                self.assertEquals(Decimal(str(data['amount'])),
                                  start_leave_amount - end_leave_amount)
                self.assertEquals(
                    1, end_financelog_count - start_financelog_count)

                if case['title'] == '满标':

                    sql4 = 'select id from futureloan.invest where loan_id =#loan_id#;'
                    invest_ids = self.db.find_all(replace_data(sql4))
                    # setattr(EnvData,'invest_ids',invest_ids)

                    for invest_id in invest_ids:
                        sql5 = 'select * from futureloan.repayment where invest_id={}'.format(
                            invest_id['id'])
                        count = self.db.count(sql5)
                        # 只要数据条数不为0即可校验通过
                        self.assertTrue(count)

        except AssertionError as e:
            self.excel.write_data(row=row, column=8, value='fail')
            log.error('用例--{}--执行未通过'.format(case['title']))
            log.exception(e)
            log.debug('预期结果:{}'.format(expected))
            log.debug('实际结果:{}'.format(res))
            raise e

        else:
            self.excel.write_data(row=row, column=8, value='pass')
            log.info('用例--{}--执行通过'.format(case['title']))
示例#25
0
    def test_withdraw(self, test_data_cases):
        # 第一步:准备用例数据
        # 备注:列表、字典方式存储的,excel读取出来是字符串。数值类型,读取出来是数值类型的,字符串类型,读取出来是字符串类型。
        # ①拼接完整的接口地址
        url = conf.get_str("env", "url_ip") + test_data_cases["url"]
        # ②请求的方法
        method = test_data_cases["method"]

        # ③请求参数
        #调用replace_data方法进行参数替换
        test_data_cases["data"] = replace_data(test_data_cases["data"])
        data = eval(test_data_cases["data"])
        # ④请求头
        headers = eval(conf.get_str("env", "headers"))
        # 添加鉴权
        # 判断是否为登录接口,不是登录接口,则需要加token值
        if test_data_cases["interface"] != "login":
            # headers["Authorization"] = self.token_data
            headers["Authorization"] = getattr(TestData, "token_data")
        # ⑤预期结果
        expected = eval(test_data_cases["expected"])
        # ⑥该用例在表单中所在行
        row = test_data_cases["case_id"] + 1

        # 第二步:发送请求到接口,获取实际结果
        if test_data_cases[
                "check_sql"]:  # 先判断用例里面check_sql字段是否有数据,如果有数据,说明需要进行数据库校验
            sql = test_data_cases["check_sql"].format(
                conf.get_str("test_data", "user"))
            # 获取充值之前的余额
            start_money = self.db.get_one(sql)[0]
        response = HandleRequest().send(url=url,
                                        method=method,
                                        json=data,
                                        headers=headers)
        result = response.json()
        # 判断是否是登录的用例,如果是登录接口,则去获取用户的id,并设置为类属性
        if test_data_cases["interface"] == "login":
            # 登录之后,从响应结果中提取用户id和token
            # (1)获取用户id
            # TestWithdraw.member_id = jsonpath.jsonpath(result, "$..id")[0]  # 通过类名.属性名设置类属性
            member_id = jsonpath.jsonpath(result, "$..id")[0]
            setattr(TestData, "member_id", str(
                member_id))  #使用setattr设置TestData类,member_id属性,属性值为member_id
            # (2)提取token
            token_type = jsonpath.jsonpath(result, "$..token_type")[0]
            token = jsonpath.jsonpath(result, "$..token")[0]
            # TestWithdraw.token_data = token_type + " " + token# 通过类名.属性名设置类属性
            token_data = token_type + " " + token  # 通过类名.属性名设置类属性
            setattr(
                TestData, "token_data",
                token_data)  # 使用setattr设置TestData类,token_data属性,属性值为token_data

            # 设置类属性还可以通过setattr进行设置
            # 下面这行代码和上面那行代码是一个意思,都是将token设为类属性
            setattr(TestWithdraw, "token_data", token_type + " " + token)
            # 第一个参数:类名
            # 第二个参数:属性名
            # 第三个参数:对应的属性值
        # 第三步:比对预期结果和实际结果
        try:
            self.assertEqual(expected["code"], result["code"])
            self.assertEqual(expected["msg"], result["msg"])
            # 提现后,进行数据库校验
            if test_data_cases["check_sql"]:
                sql = test_data_cases["check_sql"].format(
                    conf.get_str("test_data", "user"))
                # 获取提现之后的余额
                end_money = self.db.get_one(sql)[0]
                # 获取请求参数里面的充值金额
                recharge_money = decimal.Decimal(str(data["amount"]))
                my_log.info("提现之前金额为:{}\n,提现金额为:{}\n,提现之后金额为:{}\n".format(
                    start_money, recharge_money, end_money))
                # 进行断言
                self.assertEqual(recharge_money, start_money - end_money)
        except AssertionError as e:
            self.excel.write_data(row=row, column=8,
                                  value="未通过")  # 可以把列(column)放在配置文件里面
            # 记录没有通过的日志
            my_log.info("用例:{}------>执行未通过".format(test_data_cases["title"]))
            # 在没有通过的时候,使用print会打印在测试报告中
            print("预期结果:{}".format(expected))
            print("实际结果:{}".format(result))
            # 在没有通过的时候,将print输出到日志里面
            my_log.info("预期结果:{}".format(expected))
            my_log.info("实际结果:{}".format(result))
            raise e
        else:
            self.excel.write_data(row=row, column=8,
                                  value="通过")  # 可以把列(column)放在配置文件里面
            # 记录通过的日志
            my_log.info("用例:{}------>执行通过".format(test_data_cases["title"]))
    def test_invest(self, item):
        # 请求数据准备
        url = conf.get('env', 'base_url') + item['url']
        # 请求头 v2
        # headers = eval(conf.get('env', 'headers'))

        # 请求头v3
        headers = eval(conf.get('env', 'headersV3'))

        headers['Authorization'] = self.invest_token
        params = eval(replace_data(item['data'], TestInvestV3))

        # 请求参数添加timestamp和sign
        crypt_info = HandleSign.generate_sign(self.invest_token_value)
        params['timestamp'] = crypt_info['timestamp']
        params['sign'] = crypt_info['sign']

        method = item['method']
        # 预计结果
        expected = eval(item['expected'])

        # 数据库判断逻辑(请求接口之前)
        if item['check_sql']:
            # 查询投资表记录
            sql1 = "SELECT * FROM futureloan.invest WHERE member_id={} and loan_id={}".format(
                self.invest_member_id, self.loan_id)
            # 查询用户余额
            sql2 = "SELECT leave_amount FROM futureloan.member where id={}".format(
                self.invest_member_id)
            # 查询流水记录
            sql3 = "SELECT * FROM futureloan.financelog WHERE pay_member_id={}".format(
                self.invest_member_id)
            # 用例执行之前投资记录的条数
            s_invest = len(db.find_data(sql1))
            # 用例执行之前投资用户的余额
            s_amount = db.find_data(sql2)[0]['leave_amount']
            # 用例执行之前流水记录表用户的流水记录条数
            s_financelog = len(db.find_data(sql3))

        # 实际结果
        response = requests.request(method=method,
                                    url=url,
                                    json=params,
                                    headers=headers)
        res = response.json()
        print('请求参数', params)
        print('预期结果:', expected)
        print('实际结果:', res)

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

            # 数据库判断逻辑(请求接口之后)
            if item['check_sql']:
                # 查询投资表记录
                sql1 = "SELECT * FROM futureloan.invest WHERE member_id={} and loan_id={}".format(
                    self.invest_member_id, self.loan_id)
                # 查询用户余额
                sql2 = "SELECT leave_amount FROM futureloan.member where id={}".format(
                    self.invest_member_id)
                # 查询流水记录
                sql3 = "SELECT * FROM futureloan.financelog WHERE pay_member_id={}".format(
                    self.invest_member_id)
                # 用例执行之后投资记录的条数
                e_invest = len(db.find_data(sql1))
                # 用例执行之后投资用户的余额
                e_amount = db.find_data(sql2)[0]["leave_amount"]
                # 用例执行之后流水记录表用户的的流水记录条数
                e_financelog = len(db.find_data(sql3))

                # 断言判断
                # 1、对比执行前后投资表记录数量是否+1
                self.assertEqual(1, e_invest - s_invest)
                # 2、对比用户余额
                self.assertEqual(params['amount'], s_amount - e_amount)
                # 3、对比执行前后流水记录表记录数量是否+1
                self.assertEqual(1, e_financelog - s_financelog)

        except AssertionError as e:
            log.error('用例{},执行失败'.format(item['title']))
            log.exception(e)
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='未通过')
            raise e
        else:
            log.info('用例{},执行成功'.format(item['title']))
            self.excel.write_excel(row=item['case_id'] + 1,
                                   column=8,
                                   value='通过')
示例#27
0
    def test_invest(self,item):
        # 获取用例编号
        case_id = item["case_id"]
        # 请求接口
        url = conf.get("env","base_url") + item["url"]
        # 请求方法
        method = item["method"]
        # 请求头
        headers = eval(conf.get("env","headers"))
        headers["Authorization"] = self.invest_token
        # 请求参数
        item["data"] = replace_data(item["data"],TestInvest)
        params = eval(item["data"])
        # 预期结果
        expected = eval(item["expected"])
        # 用例执行前的数据校验
        if item["check_sql"]:
            # 查询投资表记录
            sql1 = "SELECT * from futureloan.invest WHERE member_id ={} and loan_id = {}".format(self.invest_member_id,self.loan_id)
            # 查询用户的余额
            sql2 = "SELECT * from futureloan.member WHERE id = {}".format(self.invest_member_id)
            # 查询流水记录
            sql3 = "SELECT * from futureloan.financelog WHERE pay_member_id = {}".format(self.invest_member_id)
            # 查询用例执行前投资记录的条数
            s_invest = len(db.find_data(sql1))
            # 查询用例执行前投资用户的余额
            s_amount = db.find_data(sql2)[0]["leave_amount"]
            # 查询用例执行前流水记录表记录的用户的流水记录条数
            s_financelog = len(db.find_data(sql3))

        # 第二步 发送请求
        response = requests.request(url=url,method=method,json=params,headers=headers)
        res = response.json()
        print("实际结果",res)
        print("预期结果",expected)
        # 第三步 断言
        try:
            self.assertEqual(res["code"],expected["code"])
            self.assertEqual(res["msg"],expected["msg"])
            if item["check_sql"]:
                # 查询投资表记录
                sql1 = "SELECT * from futureloan.invest WHERE member_id ={} and loan_id = {}".format(self.invest_member_id, self.loan_id)
                # 查询用户的余额
                sql2 = "SELECT * from futureloan.member WHERE id = {}".format(self.invest_member_id)
                # 查询流水记录
                sql3 = "SELECT * from futureloan.financelog WHERE pay_member_id = {}".format(self.invest_member_id)
                # 查询用例执行后投资记录的条数
                e_invest = len(db.find_data(sql1))
                # 查询用例执行后用户的余额
                e_amount = db.find_data(sql2)[0]["leave_amount"]
                # 查询用例执行后流水记录表记录的用户的流水记录条数
                e_financelog = len(db.find_data(sql3))
                # 断言比对
                self.assertEqual(1,e_invest - s_invest)
                self.assertEqual(1,e_financelog - s_financelog)
                self.assertEqual(params["amount"],float(s_amount - e_amount))

        except AssertionError as e:
            log.error("用例执行失败:{}".format(item["title"]))
            log.exception(e)
            self.excel_audit.write_data(row=case_id + 1, column=8, value="失败")
            raise e
        else:
            log.info("用例执行通过:{}".format(item["title"]))
            self.excel.write_data(row=case_id+1,column=8,value="通过")