예제 #1
0
 def test_getChatVedio(self, case):
     se = Session()
     # 准备用例数据
     login_url = "http://doctor.yy365.cn/index/login"
     login_data = {
         "username": conf.get("test_data", "shop_user"),
         "password": conf.get("test_data", "shop_pwd")}
     response = se.post(url=login_url, data=login_data)
     url1 = conf.get("env", "url") + case["url"]
     data1 = eval(case["data"])
     response2 = se.post(url=url1, data=data1, verify=False)
     res = response2.json()
     row = case["case_id"] + 1
     expected = eval(case["expected"])
     try:
         self.assertEqual(expected["CODE"], res["CODE"])
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_data(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_data(row=row, column=8, value="通过")
예제 #2
0
 def test_getPasteList(self, case):
     # 准备用例数据
     url = "https://doctor.yy365.cn/ComHandle/getPasteList"
     method = "post"
     headers = {"Content-Type": "application/x-www-form-urlencoded"}
     data = {"QueryType": "", "Params": '{"search":""}',
             "UserGuid": "MTg2OTkwfEA5Yzg0MWM4ZThmNzdjY2FhYjAwZTg2MDY2MmZmNDNjM3xAN2E2ZmQ0ZmRkOWRjYTRlZGQ4NzRiNmUzNjEzNmExOGU-"}
     res = request(url=url, method=method, data=data, headers=headers, verify=False)
     row = case["case_id"] + 1
     expected = eval(case["expected"])
     # 调用接口,获取实际结果
     try:
         self.assertEqual(expected["status_code"], res.status_code)
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_data(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_data(row=row, column=8, value="通过")
예제 #3
0
    def test_find_userinfo(self, case):
        # 1、准备请求参数
        # 替换url中的会员id
        url = conf.get("env", "base_url") + replace_data(case["url"])
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "token")
        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 2、发起请求,获取实际结果
        response = request(url=url, method=method, headers=headers)
        res = response.json()
        print("预期结果:{}".format(expected))
        print("实际结果:{}".format(res))

        # 3、断言
        try:
            # 断言预期结果与实际结果是否一致
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            # 将结果写入日志文件和excel中
            log.error("测试用例--{}--未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            result = "未通过"
            raise e
        else:
            log.info("测试用例--{}--通过".format(case["title"]))
            result = "通过"
        finally:
            self.excel.write_data(row=row, column=8, value=result)
예제 #4
0
    def test_loans(self,cas):
        url = conf.get('env','url') + cas['url']
        data = eval(cas['data'])
        headers = eval(conf.get('env','headers'))
        method = cas['method']
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

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

        try:
            self.assertEqual(expected['code'],res['code'])
            self.assertEqual(expected['msg'],res['msg'])
            #判断返回的数据条数
            self.assertEqual(expected['len'],len(res['data']))
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.execl.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.execl.write(row=row, column=8, value='通过')
예제 #5
0
    def test_login(self, cas):
        url = cas['url']
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        data = eval(cas['data'])
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respons = request(url=url, method=method, json=data, headers=headers)
        res = respons.json()
        print('实际结果:', res)
        print('预期结果:', expected)

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            log.error('用例{}没有通过,错误等级为error'.format(cas['title']))
            log.debug('预期结果{}'.format(cas['expected']))
            log.debug('实际结果{}'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='未通过')
            raise e
        else:
            log.info('用例{}执行通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #6
0
 def test_pwd(self, case):
     # 准备用例数据
     method, headers, url, data, row, expected = getdata(case)
     # 调用接口,获取实际结果
     res = (request(url=url,
                    method=method,
                    data=data,
                    headers=headers,
                    verify=False)).json()
     try:
         result = ''
         if 'result' in res:
             result = res['result']
         elif 'ERROR' in res:
             result = res['ERROR']
         self.assertEqual(expected, result)
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_data(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_data(row=row, column=8, value="通过")
예제 #7
0
    def test_loans(self, cas):
        cas['url'] = replace_data(cas['url'])
        url = conf.get('env', 'url') + cas['url']
        headers = eval(conf.get('env', 'headers'))
        headers["Authorization"] = getattr(EnvData, "token")
        method = cas['method']
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones = request(url=url, method=method, headers=headers)
        res = respones.json()

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.execl.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.execl.write(row=row, column=8, value='通过')
예제 #8
0
    def test_withdraw(self, case):
        # 1、准备用例数据
        url = conf.get("env", "base_url") + case["url"]
        method = case["method"]
        # 准备用例参数
        # 替换参数中的用户id
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # 准备请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "token")
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 判断用例是否需要数据库校验,获取提现之前的账户余额
        if case["check_sql"]:
            sql = replace_data(case["check_sql"])
            start_money = self.db.find_one_data(sql)["leave_amount"]
            print("提现前得余额:", start_money)

        # 2、发送请求获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)
        # 判断用例是否需要数据库校验,获取提现之后的账户余额
        if case["check_sql"]:
            sql = replace_data(case["check_sql"])
            end_money = self.db.find_one_data(sql)["leave_amount"]
            print("提现后得余额:", end_money)

        # 3、断言预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断是否需要进行sql校验
            if case["check_sql"]:
                # 将提现金额转换为decimal类型(因为数据库中的金额是decimal类型的)
                recharge_money = decimal.Decimal(str(data["amount"]))
                self.assertEqual(recharge_money, start_money - end_money)

        except AssertionError as e:
            # 将结果写入日志中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            result = "未通过"
            raise e
        else:
            # 结果写到日志
            log.info("用例--{}--执行通过".format(case["title"]))
            result = "通过"
        finally:
            # 将结果写入到excel中
            self.excel.write_data(row=row, column=8, value=result)
예제 #9
0
    def test_register(self, case):
        """
        case={"address": "https://www.aliexpress.com/store/3213085", "asstext": "店铺验证成功"}
        :param case:
        :return:
        """

        # 1、准备用例数据
        # 请求方法
        method = case["method"]
        # 请求地址
        url = case["url"]
        # 请求参数
        # 判断是否有手机号码需要替换
        if "#phone#" in case["data"]:
            # 随机生成一个手机号码
            phone = self.random_phone()
            # 将参数中的#phone#替换成随机生成的手机号码
            case["data"] = case["data"].replace("#phone#", phone)
        data = eval(case["data"])
        # 请求头
        headers = eval(conf.get("env", "headers"))
        # 预期结果
        expected = eval(case["expected"])
        # 用例所在行
        row = case["case_id"] + 1
        # 2、发送请求获取实际结果
        response = request(method=method, url=url, json=data, headers=headers)
        # 获取实际结果
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)
        # 3、断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断是否需要进行sql校验
            if case["check_sql"]:
                sql = case["check_sql"].replace("#phone#",
                                                data["mobile_phone"])
                res = self.db.find_data_count(sql)
                self.assertEqual(1, res)
        except AssertionError as e:
            # 结果回写excel中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            self.excel.write_data(row=row, column=8, value="未通过")
            raise e
        else:
            # 结果回写excel中
            log.info("用例--{}--执行通过".format(case["title"]))
            self.excel.write_data(row=row, column=8, value="通过")
    def test_withdraw(self, case):
        # 第一步:准备用例数据
        # 请求方法
        method = case["method"]
        # 请求地址
        url = conf.get("env", "BASE_URL") + case["url"]
        # 请求参数,替换用例中#member_id#
        data = eval(case["data"].replace("#member_id#", self.member_id))
        # 请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.token
        # 期望结果
        expected = eval(case["expected"])
        # 数据库前置查询
        if case["check_sql"]:
            sql = case["check_sql"].format(self.member_id)
            start_money = self.db.find_one(sql)["leave_amount"]
        # 需要回写的行
        row = case["case_id"] + 1

        # 第二步:接口调用
        response = requests.request(method=method,
                                    url=url,
                                    json=data,
                                    headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)

        # 数据库后置查询
        if case["check_sql"]:
            sql = case["check_sql"].format(self.member_id)
            end_money = self.db.find_one(sql)["leave_amount"]

        # 第三步:数据断言和数据库断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 数据库断言
            if case["check_sql"]:
                recharge_money = decimal.Decimal(str(data["amount"]))
                self.assertEqual(recharge_money, start_money - end_money)
        except AssertionError as e:
            # 结果回写到excel中
            log.error("用例{}执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            self.excel.write_excel(row=row, column=8, value="未通过")
            raise e
        else:
            log.info("用例--{}--执行通过".format(case["title"]))
            self.excel.write_excel(row=row, column=8, value="通过")
예제 #11
0
    def test_withdraw(self, case):

        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 准备用例参数
        # 替换参数中的用户id,
        case["data"] = case["data"].replace("#member_id#", self.member_id)
        data = eval(case["data"])
        # 准备请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.token
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 判断该用例是否需要数据库校验,获取取现之前的账户余额
        if case["check_sql"]:
            sql = case["check_sql"].format(self.member_id)
            start_money = self.db.find_one(sql)["leave_amount"]
            print("取现之前的金额:", start_money)

        # 第二步: 发送请求获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)

        # 判断该用例是否需要数据库校验,获取取现之后的账户余额
        if case["check_sql"]:
            sql = case["check_sql"].format(self.member_id)
            end_money = self.db.find_one(sql)["leave_amount"]
            print("取现之后的金额:", end_money)
        # 第三步:断言预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断是否需要进行sql校验
            if case["check_sql"]:
                # 将取现金额转换为decimal类型(因为数据库中的金额是decimal类型的)
                recharge_money = decimal.Decimal(str(data["amount"]))
                self.assertEqual(recharge_money, start_money - end_money)
        except AssertionError as e:
            # 结果回写excel中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            self.excel.write_data(row=row, column=8, value="未通过")
            raise e
        else:
            # 结果回写excel中
            log.info("用例--{}--执行通过".format(case["title"]))
            self.excel.write_data(row=row, column=8, value="通过")
예제 #12
0
    def test_add(self, case):

        # 第一步:准备用例数据
        url = conf.get("env", "url") + case["url"]
        method = case["method"]
        # 替换参数中的用户id,
        # case["data"] = case["data"].replace("#member_id#", self.member_id)
        # --------替换用例中的动态数据
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # 准备请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "token")
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 加标之前,查询数据库中该用户标的数量
        if case["check_sql"]:
            # sql = case["check_sql"].replace("#member_id#",self.member_id)
            sql = replace_data(case["check_sql"])

            start_count = self.db.find_count(sql)

        # 第二步: 发送请求获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)

        # 第三步:断言预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            if case["check_sql"]:
                # 加标之后
                # sql = case["check_sql"].replace("#member_id#", self.member_id)
                replace_data(case["check_sql"])
                end_count = self.db.find_count(sql)
                self.assertEqual(1, end_count - start_count)
        except AssertionError as e:
            # 结果回写excel中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            self.excel.write_data(row=row, column=8, value="未通过")
            raise e
        else:
            # 结果回写excel中
            log.info("用例--{}--执行通过".format(case["title"]))
            self.excel.write_data(row=row, column=8, value="通过")
예제 #13
0
    def test_audit(self, case):
        # 1、准备用例数据
        url = conf.get("env", "base_url") + case["url"]
        method = case["method"]
        # 准备用例参数
        # 替换参数中的用户id
        # 判读是否需要要替换审核通过的标id
        if "#pass_loan_id#" in case["data"]:
            # 将之前保存的审核通过的id,替换到该用例中
            case["data"] = case["data"].replace("#pass_loan_id#",
                                                self.pass_loan_id)

        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # 准备请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "admin_token")
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 2、发送请求获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)
        # 判断是否是审核通的用例,并且审核成功
        if case["title"] == "审核通过" and res["msg"] == "OK":
            # 将执行通过的标id保存为类属性
            TestAudit.pass_loan_id = str(data["loan_id"])

        # 3、断言预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
        except AssertionError as e:
            # 将结果写入日志中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            result = "未通过"
            raise e
        else:
            # 结果写到日志
            log.info("用例--{}--执行通过".format(case["title"]))
            result = "通过"
        finally:
            # 将结果写入到excel中
            self.excel.write_data(row=row, column=8, value=result)
예제 #14
0
    def test_audit(self, case):
        # 第一步:准备数据
        url = conf.get("env", "url") + case["url"]

        #  >>>>>>>>>>>判断是否需要替换审核通过的标id >>>>>>>>>>>
        if "#pass_loan_id#" in case["data"]:
            #  >>>>>>>>>>>  将之前保存的审核通过的标ID 类属性的地方,替换到该用例中 >>>>>>>>>>>
            case["data"] = case["data"].replace("#pass_loan_id#",
                                                str(self.pass_loan_id))

        data = eval(case["data"].replace("#loan_id#", str(self.loan_id)))
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.admin_token
        if case["title"] == "普通用户进行审核":
            headers["Authorization"] = self.user_token

        method = case["method"]
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 第二步:调用接口,获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()
        # (-------判断是否是审核通过的用例,并且审核成功---------------)
        if case["title"] == "审核通过" and res["msg"] == "OK":
            # >>>>>>>>>>>(------将执行通过的标ID保存为类属性------------)
            TestAudit.pass_loan_id = data["loan_id"]

        # 第三步:断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # ( >>>>>>>>>>>-----对需要进行数据库校验的用例,进行校验)
            if case["check_sql"]:
                sql = case["check_sql"].replace("#loan_id#", str(self.loan_id))
                status = self.db.find_one(sql)["status"]
                self.assertEqual(expected["status"], status)

        except AssertionError as e:
            # 结果回写excel中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            self.excel.write_data(row=row, column=8, value="未通过")
            raise e
        else:
            # 结果回写excel中
            log.info("用例--{}--执行通过".format(case["title"]))
            self.excel.write_data(row=row, column=8, value="通过")
예제 #15
0
    def test_add(self, case):
        # 1、准备用例数据
        url = conf.get("env", "base_url") + case["url"]
        method = case["method"]
        # 准备用例参数
        # 替换参数中的用户id
        case["data"] = replace_data(case["data"])
        data = eval(case["data"])
        # 准备请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "token")
        expected = eval(case["expected"])
        row = case["case_id"] + 1
        # 加标之前,查询数据库中该用户标的数量
        if case["check_sql"]:
            sql = replace_data(case["check_sql"])
            start_count = self.db.find_data_count(sql)

        # 2、发送请求获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        res = response.json()
        print("预期结果:", expected)
        print("实际结果:", res)

        # 3、断言预期结果和实际结果
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断是否需要进行sql校验
            if case["check_sql"]:
                # 加标之后
                sql = replace_data(case["check_sql"])
                end_count = self.db.find_data_count(sql)
                self.assertEqual(1, end_count - start_count)
        except AssertionError as e:
            # 将结果写入日志中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            result = "未通过"
            raise e
        else:
            # 结果写到日志
            log.info("用例--{}--执行通过".format(case["title"]))
            result = "通过"
        finally:
            # 将结果写入到excel中
            self.excel.write_data(row=row, column=8, value=result)
예제 #16
0
    def test_recharge(self, cas):

        # 准备数据
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = cas['data'].replace('#member_id#', self.member_id)
        data = eval(cas['data'])
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = self.token
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        if cas['check_sql']:
            sql = cas['check_sql'].format(self.member_id)
            money_data = self.bb.find_one(sql)['leave_amount']
            print("充值之前的钱:", money_data)

        # 发送请求获取实际结果
        repans = request(url=url, method=method, json=data, headers=headers)
        res = repans.json()

        if cas['check_sql']:
            sql = cas['check_sql'].format(self.member_id)
            money_data2 = self.bb.find_one(sql)['leave_amount']
            print("充值之后的钱:", money_data2)

        print('预期结果:', expected)
        print('实际结果:', res)
        # 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                # 将准备的data数据中的amount数值类型转换为decimal
                my_data = decimal.Decimal(str(data['amount']))
                self.assertEqual(my_data, money_data2 - money_data)

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

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #17
0
 def test_register(self, cases):
     # 第一步:准备用例数据
     # 请求方法
     method = cases["method"]
     # 请求地址
     url = cases["url"]
     # 请求参数(参数化替换)
     # 判断data中是否有需要替换的参数
     if "#phone#" in cases["data"]:
         phone = self.random_phone()
         cases["data"] = cases["data"].replace("#phone#", phone)
     data = eval(cases["data"])
     # 请求头
     headers = eval(conf.get("env", "headers"))
     # 预期结果
     expected = eval(cases["expected"])
     # 用例所在行
     row = cases["case_id"] + 1
     # 调用接口请求
     response = request(method=method, url=url, json=data, headers=headers)
     # 获取实际结果
     res = response.json()
     print("预期结果为:", expected)
     print("实际结果为:", res)
     # 断言
     try:
         # 断言两个字段是否相同
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
         # 判断是否需要数据库断言
         if cases["check_sql"]:
             sql = cases["check_sql"].replace("#phone#",
                                              data["mobile_phone"])
             res = self.db.find_count(sql)
             self.assertEqual(1, res)
     except AssertionError as e:
         # 断言结果回写到excel中
         log.error("用例---{}----执行未通过".format(cases["title"]))
         log.debug("预期结果为:{}".format(expected))
         log.debug("实际结果为:{}".format(res))
         log.exception(e)
         self.excel.write_excel(row=row, column=8, value="不通过")
         # 抛出异常
         raise e
     else:
         # 结果回写到excel中
         log.info("用例---{}----执行通过".format(cases["title"]))
         self.excel.write_excel(row=row, column=8, value="通过")
예제 #18
0
    def test_add(self, case):
        # 第一步:准备数据

        # 请求方法
        method = case["method"]
        # 请求地址
        url = os.path.join(conf.get("env", "BASE_URL")) + case["url"]
        # 请求参数
        data = eval(replace_data(case["data"]))
        # 请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "token")
        # 预期结果
        expected = eval(case["expected"])
        log.info("--------预期结果:{}----------".format(expected))
        # 回写的行
        row = case["case_id"] + 1
        # 数据库前置查询
        if case["check_sql"]:
            start_count = self.db.find_count(replace_data(case["check_sql"]))
        # 第二步:接口调用
        response = requests.request(method=method,
                                    url=url,
                                    json=data,
                                    headers=headers)
        # 实际结果
        res = response.json()
        log.info("--------实际结果:{}----------".format(res))

        # 数据断言和数据库断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 数据库后置查询
            if case["check_sql"]:
                end_count = self.db.find_count(replace_data(case["check_sql"]))
                self.assertEqual(1, end_count - start_count)
        except AssertionError as e:
            # 结果回写到excel中
            log.error("用例--{}--执行未通过".format(case["title"]))
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            log.exception(e)
            self.excel.write_excel(row, 8, value="未通过")
        else:
            # 结果回写excel中
            log.info("用例--{}--执行通过".format(case["title"]))
            self.excel.write_excel(row, 8, value="通过")
예제 #19
0
    def test_withdraw(self, cas):

        # 准备用例数据
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = cas['data'].replace('#member_id#', str(self.member_id))
        data = eval(cas['data'])

        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = self.token
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        # 查询取现之前的余额
        if cas['check_sql']:
            sql = cas['check_sql'].format(self.member_id)
            start_money = self.bb.find_one(sql)['leave_amount']
            print('取现前:', start_money)
        # 发送请求
        response1 = request(method=method, url=url, headers=headers, json=data)
        res = response1.json()
        print('实际结果:', res)
        print('预期结果:', expected)
        # 断言
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            # 查询请求之后的账户余额
            if cas['check_sql']:
                sql = cas['check_sql'].format(self.member_id)
                end_money = self.bb.find_one(sql)['leave_amount']
                print('取现后:', end_money)
                # 用例数据中data,amount的数值类型转换
                my_data = decimal.Decimal(str(data['amount']))

                self.assertEqual(my_data, start_money - end_money)
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #20
0
 def test_audit(self, case):
     # 第一步:准备测试数据
     # 调用方法
     method = case["method"]
     # 调用地址
     url = conf.get("env", "BASE_URL") + case["url"]
     # 调用参数
     data = eval(replace_data(case["data"]))
     # 调用信息头
     headers = eval(conf.get("env", "headers"))
     headers["Authorization"] = getattr(EnvData, "admin_token")
     # 预期结果
     expected = eval(case["expected"])
     # 是否有数据库校验
     if case["check_sql"]:
         sql = replace_data(case["check_sql"])
         start_count = self.db.find_count(sql)
     # 回写的行
     row = case["case_id"] + 1
     # 第二步:接口调用
     response = requests.request(method=method, url=url, json=data, headers=headers)
     res = response.json()
     if case["title"] == "审核通过" and res["msg"] == "OK":
         # 判断有“审核通过”的案例,已经审核通过,保存项目id
         setattr(EnvData, "pass_loan_id", str(data["loan_id"]))
         print("------------------------",EnvData.pass_loan_id)
     # 第三步:断言和回写
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
         # 是否需要数据库校验
         if case["check_sql"]:
             sql = replace_data(case["check_sql"])
             status = self.db.find_one(sql)["status"]
             self.assertEqual(expected["status"], status)
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_excel(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_excel(row=row, column=8, value="通过")
예제 #21
0
 def test_getDiseaseList(self, case):
     method, headers, url, data, row, expected = getdata(case)
     data["UserGuid"] = login()
     res = (request(url=url, method=method, data=data, headers=headers, verify=False)).json()
     try:
         self.assertEqual(expected, res["result"])
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_data(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_data(row=row, column=8, value="通过")
예제 #22
0
    def test_update_regname(self, case):
        # 1、准备数据
        url = conf.get("env", "base_url") + case["url"]
        # 判断是否有昵称需要替换
        if "#reg_name#" in case["data"]:
            # 随机生成一个昵称
            reg_name = self.random_name()
            # print(reg_name)
            # 将参数中的#reg_name#替换成随机生成的昵称
            case["data"] = replace_data(case["data"])
        # 替换用户id
        data = replace_data(case["data"])
        data = eval(data)
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = getattr(EnvData, "token")
        expected = eval(case["expected"])
        row = case["case_id"] + 1

        # 2、发起请求,获取实际结果
        response = request(url=url, method="patch", headers=headers, json=data)
        res = response.json()

        # 3、断言
        try:
            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 对需要进行数据库校验的用例进行校验
            if case["check_sql"]:
                sql = replace_data(case["check_sql"])
                new_regname = self.db.find_one_data(sql)["reg_name"]
                self.assertEqual(reg_name, new_regname)
        except AssertionError as e:
            # 结果写进日志和excel中
            log.error("用例--{}--执行未通过")
            log.debug("预期结果:{}".format(expected))
            log.debug("实际结果:{}".format(res))
            result = "未通过"
            log.exception(e)
        else:
            log.info("用例--{}--执行通过".format(case["title"]))
            result = "通过"
        finally:
            self.excel.write_data(row=row, column=8, value=result)
예제 #23
0
    def test_audit(self, cas):
        # 准备数据
        url = conf.get('env', 'url') + cas['url']
        # 判断是否需要替换为审核通过的标id
        if "#pass_loan_id#" in cas['data']:
            cas['data'] = replace_data(cas['data'])

        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'admin_token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1
        # 获取实际结果
        response = request(url=url, method=method, json=data, headers=headers)
        rese = response.json()
        print('预期结果:', expected)
        print('实际结果:', rese)
        # 判断是否是审核通过的用例,并且审核成功
        if cas['title'] == '审核通过' and rese['msg'] == 'OK':
            setattr(EnvData, 'pass_loan_id', str(data['loan_id']))

        try:
            self.assertEqual(expected['code'], rese['code'])
            self.assertEqual(expected['msg'], rese['msg'])
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                status = self.bb.find_one(sql)['status']
                self.assertEqual(expected['status'], status)
                print(status, type(status))
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(rese))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #24
0
    def test_add(self, cas):
        # 准备用例数据
        url = conf.get('env', 'url') + cas['url']
        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        method = cas['method']
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1
        # 请求之前查询用户标的数量
        if cas['check_sql']:
            sql = replace_data(cas['check_sql'])
            st = self.bb.find_count(sql)
            print('请求之前的标数:', st)

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

        print('预期结果:', expected)
        print('实际结果:', res)
        # 请求后查询用户标的数量
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                end = self.bb.find_count(sql)
                print('请求之后标数', end)
                self.assertEqual(1, end - st)
        except AssertionError as e:
            log.error('用例--{}--未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}:'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #25
0
 def test_invest(self, case):
     """投资用例"""
     # 第一步:准备数据
     url = conf.get("env", "url") + case["url"]
     method = case["method"]
     headers = eval(conf.get("env", "headers"))
     if case["interface"] != "login":
         # 如果不是登录接口,则添加一个token
         headers["Authorization"] = getattr(EnvData, "token")
     data = eval(replace_data(case["data"]))
     expected = eval(case["expected"])
     row = case["case_id"] + 1
     # 第二步:发送请求,获取实际结果
     response = request(url=url, method=method, json=data, headers=headers)
     res = response.json()
     if case["interface"] == "login":
         # 如果是登录接口则提取用户id和token
         member_id = str(jsonpath.jsonpath(res, "$..id")[0])
         token = "Bearer" + " " + jsonpath.jsonpath(res, "$..token")[0]
         setattr(EnvData, "member_id", member_id)
         setattr(EnvData, "token", token)
     if case["interface"] == "add":
         # 如果是加标接口则提取标id进行保存
         loan_id = str(jsonpath.jsonpath(res, "$..id")[0])
         setattr(EnvData, "loan_id", loan_id)
     # 第三步:断言
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_data(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_data(row=row, column=8, value="通过")
예제 #26
0
    def test_invest(self, cas):
        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        data = eval(replace_data(cas['data']))
        headers = eval(conf.get('env', 'headers'))
        if cas['interface'] != 'login':
            #如果不是登录的接口需要添加token
            headers['Authorization'] = getattr(EnvData, 'token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones = request(url=url, method=method, json=data, headers=headers)
        res = respones.json()
        if cas['interface'] == 'login':
            #如果是登录接口,需要提取id和token
            token = 'Bearer' + ' ' + jsonpath.jsonpath(res, '$..token')[0]
            member_id = str(jsonpath.jsonpath(res, '$..id')[0])
            setattr(EnvData, 'token', token)
            setattr(EnvData, 'member_id', member_id)

        if cas['interface'] == 'add':
            #如果是加标接口,需要获取加标后的标id
            loan_id = str(jsonpath.jsonpath(res, '$..id')[0])
            setattr(EnvData, 'loan_id', loan_id)

        print('预期结果:', expected)
        print('实际结果:', res)
        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
        except AssertionError as e:
            log.error('这是{}用例未通过'.format(cas['title']))
            log.debug('预期结果{}'.format(expected))
            log.debug('实际结果{}'.format(res))
            log.exception(e)
            self.excel.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('用例{}通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')
예제 #27
0
 def test_importData(self, case):
     se = Session()
     # 准备用例数据
     login_url = "http://doctor.yy365.cn/index/login"
     login_data = {
         "username": conf.get("test_data", "admin_user"),
         "password": conf.get("test_data", "admin_pwd")
     }
     response = se.post(url=login_url, data=login_data)
     url1 = conf.get("env", "url") + case["url"]
     headers = {"Content-Type": "multipart/form-data"}
     file = {
         'file':
         open(
             r"C:\Users\Administrator\Desktop\Romens_Api_Test\data\891407.xls",
             'rb')
     }
     response2 = se.post(url=url1,
                         files=file,
                         verify=False,
                         headers=headers)
     res = response2.json()
     row = case["case_id"] + 1
     expected = eval(case["expected"])
     try:
         self.assertEqual(expected["status_code"], response2.status_code)
     except AssertionError as e:
         # 结果回写excel中
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         log.exception(e)
         self.excel.write_data(row=row, column=8, value="未通过")
         raise e
     else:
         # 结果回写excel中
         log.info("用例--{}--执行通过".format(case["title"]))
         self.excel.write_data(row=row, column=8, value="通过")
예제 #28
0
 def test_login(self, cases):
     # 第一步:准备用例数据
     # 请求方法
     method = cases["method"]
     # 请求地址
     url = cases["url"]
     # 请求参数
     data = eval(cases["data"])
     # 请求头
     headers = eval(conf.get("env", "headers"))
     # 预期结果
     expected = eval(cases["expected"])
     # 用例所在行
     row = cases["case_id"] + 1
     # 调用接口请求
     response = request(method=method, url=url, json=data, headers=headers)
     # 获取实际结果
     res = response.json()
     # print("预期结果为:", expected)
     # print("实际结果为:", res)
     # 断言
     try:
         # 断言两个字段是否相同
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
     except AssertionError as e:
         # 断言结果回写到excel中
         log.error("用例---{}----执行未通过".format(cases["title"]))
         log.debug("预期结果为:{}".format(expected))
         log.debug("实际结果为:{}".format(res))
         log.exception(e)
         self.excel.write_excel(row=row, column=8, value="不通过")
         # 抛出异常
         raise e
     else:
         # 结果回写到excel中
         log.info("用例---{}----执行通过".format(cases["title"]))
         self.excel.write_excel(row=row, column=8, value="通过")
예제 #29
0
 def test_login(self, case):
     # 1、准备用例数据
     # 请求方法
     method = case["method"]
     # 请求地址
     url = case["url"]
     # 请求参数
     data = eval(case["data"])
     # 请求头
     headers = eval(conf.get("env", "headers"))
     # 预期结果
     expected = eval(case["expected"])
     # 用例所在行
     row = case["case_id"] + 1
     # 2、发送请求获取实际结果
     response = request(method=method, url=url, json=data, headers=headers)
     # 获取实际结果
     res = response.json()
     print("预期结果:", expected)
     print("实际结果:", res)
     # 3、断言
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
     except AssertionError as e:
         # 记录日志
         log.error("用例--{}--执行未通过".format(case["title"]))
         log.debug("预期结果:{}".format(expected))
         log.debug("实际结果:{}".format(res))
         result = "未通过"
         log.exception(e)
         raise e
     else:
         log.info("用例--{}--执行通过".format(case["title"]))
         result = "通过"
     finally:
         # 结果回写excel中
         self.excel.write_data(row=row, column=8, value=result)
예제 #30
0
    def test_register(self, cas):

        expected = eval(cas['expected'])
        method = cas['method']
        # 用生成的随机手机号码替换#phon#
        if '#phon#' in cas['data']:
            phones = self.readom_phon()
            cas['data'] = cas['data'].replace('#phon#', phones)
        data = eval(cas['data'])
        url = cas['url']
        headers = eval(conf.get('env', 'headers'))
        row = cas['case_id'] + 1
        respons = request(method=method, url=url, json=data, headers=headers)
        res = respons.json()
        print('预期结果:', expected)
        print('实际结果:', res)

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

            if cas['sql']:
                qy = cas['sql'].replace('#phon#', data['mobile_phone'])
                re = self.bb.find_one(qy)
                self.assertTrue(re)

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

            raise e
        else:
            log.info('用例--{}--通过'.format(cas['title']))
            self.excel.write(row=row, column=8, value='通过')