Пример #1
0
    def test_login(self, case):
        # 第一步:准备测试数据和入参
        excepted = case.excepted
        # url = case.url + case.interface
        url = my_conf.get('url', 'url') + case.url + case.interface
        case.data = data_replace(case.data)
        if "*phone*" in case.data:
            random_phone = self.random_phone()
            case.data = case.data.replace("*phone*", random_phone)
        request_data = eval(case.data)
        # 第二步:请求接口
        res = HTTPRequest().request(case.method, url, request_data)

        # 第三步:预期对比
        try:
            self.assertEqual(json.loads(excepted), res.json())
        except AssertionError as e:
            self.do_excel.write_data(case.case_id + 1, 8, "Fail")
            logger.info("测试数据为:{}".format(request_data))
            logger.info("期望结果是:{}".format(excepted))
            logger.info("实际结果是:{}".format(res.json()))
            logger.exception(e)
            raise e
        else:
            self.do_excel.write_data(case.case_id + 1, 8, "Pass")
            logger.info("测试数据为:{}".format(request_data))
            logger.info("期望结果是:{}".format(excepted))
            logger.info("实际结果是:{}".format(res.json()))
Пример #2
0
    def test_add(self, case):
        # 第一步:入参和用例数据
        url = my_conf.get('url', 'url') + case.url + case.interface
        case.data = data_replace(case.data)
        if "*memberId*" in case.data:
            max_id = self.db.find_one("select max(id) from member")[0]
            memberId = max_id + 1
            case.data = case.data.replace("*memberId*", str(memberId))

        # 判断是否需要sql校验
        if case.check_sql:
            case.check_sql = data_replace(case.check_sql)
            # 获取当前用户加标签的数量
            start_count = self.db.find_count(case.check_sql)
Пример #3
0
 def test(self, items):
     self.pr.sendMCode()  # 发送短信验证码
     rp = Replace()  # 创建替换对象
     case_id = items.case_id  # 获取用例编号
     url = ob.getstr('url', 'url') + items.url
     data = items.data  # 获取数据
     title = items.title  # 获取用例标题
     if "@verify_code@" in data:
         verify_code = int(getattr(ConText, 'verify_code')) + 1
         data = data.replace("@verify_code@",
                             str(verify_code))  # 用最新的验证码去替换
     if title == '验证码超时':
         verify_code = ob.getstr("verify_phone",
                                 "verify_code")  # 拿到已经超时的验证码
         phone = ob.getstr("verify_phone", "phone")  # 拿到发送的手机号
         data = data.replace("<verify_code>", verify_code)  # 替换验证码
         data = data.replace("<phone>", phone)  # 替换手机号码
     client = Client(url)  # 创建连接
     data = eval(rp.replace_data(data))  # 获取请求数据
     print("请求数据为:", data)
     except_result = str(items.except_result)  # 获取预期结果,并转换为字典
     print('第{}条测试用例:{}开始执行'.format(case_id, title))
     re = client.service.userRegister(data)  # 发送请求
     acl_re = str(re.retCode)  # 获取实际结果
     print('实际结果:{}'.format(except_result), type(except_result))
     print('预期结果:{}'.format(acl_re), type(acl_re))
     print(dict(re))
     # 比对实际结果与预期结果
     try:
         self.assertEqual(except_result, acl_re)
         if items.check_sql:
             sql = rp.replace_data(items.check_sql)
             slect_result = self.mysql.find_result(sql)  # 得到查询结果
             self.assertEqual(1, slect_result)
             re_username = data["user_id"]  # 拿到注册过的用户名
             re_phone = data["mobile"]
             setattr(ConText, 're_username', re_username)  # 将注册过后的用户名写进临时变量
             setattr(ConText, 're_phone', re_phone)  # 将注册过后的手机号码写进临时变量
     except AssertionError as e:
         print('{}用例测试未通过'.format(title))
         self.mylog.error('{}用例测试未通过'.format(title))  # 打印日志信息
         self.excle.write(row=case_id + 1, column=8, value='未通过')  # 回写测试结果
         raise e  # 抛出异常
     else:
         print('{}用例测试通过'.format(title))
         self.mylog.info('{}用例测试通过'.format(title))  # 打印日志信息
         self.excle.write(row=case_id + 1, column=8, value='通过')  # 回写测试结果
     finally:
         self.excle.write(row=case_id + 1, column=7, value=acl_re)  # 回写实际结果
Пример #4
0
    def test(self, items):
        rp = Replace()  # 创建替换对象

        # 获取测试用例的数据
        case_id = items.case_id  # 用例数据的编号
        title = items.title  # 用例的标题

        method = items.method  # 请求方法
        url = ob.getstr('url', 'url') + items.url  # 请求地址
        except_result = str(items.except_result)  # 获得预期结果
        data = items.data

        if items.check_sql:
            if items.interface == 'generateRepayments':
                result1 = self.mysql.find_result(
                    rp.replace_data(items.check_sql))  # 请求前数据表中记录的个数

        if "@loanId@" in items.data:
            max_loanId = self.mysql.select(sql="SELECT max(Id)From loan",
                                           row=1)[0]  # 查到loan表的最大标id
            data = data.replace("@loanId@", str(max_loanId + 100))
        data = eval(rp.replace_data(data))  # 替换后的申请数据
        print(data)

        print('第{}条用例开始执行:{}'.format(case_id, title))  # 打印信息
        self.mylog.info('第{}条用例开始执行:{}'.format(case_id, title))  # 写进日志
        # 发送请求获取实际结果
        res = HttpSession(url=url,
                          data=data).httprequest(method=method).json()['code']
        # 比对实际与预期结果
        print('预期结果:{}'.format(except_result))
        print('实际结果:{}'.format(res))
        try:
            self.assertEqual(except_result, res)
            if items.check_sql:  # 如果需要数据库校验
                if items.interface == 'bidloan':
                    investId = self.mysql.select(
                        rp.replace_data(items.check_sql))[0][0]  # 竞标得到investId
                    setattr(ConText, 'investId', investId)  # 将investId写进常量类
                if items.interface == 'generateRepayments':
                    select_result = self.mysql.find_result(
                        rp.replace_data(items.check_sql))  # 得到投资之后结果
                    self.assertEqual(1,
                                     select_result - result1)  # 比对查询的结果与预期的结果

        except AssertionError as e:
            print('{}测试用例未通过'.format(title))
            self.mylog.error('{}测试用例未通过,未通过的信息为{}'.format(title, e))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=9, value='未通过')  # 回写测试结果
            raise e  # 抛出异常
        else:
            print('{}测试用例通过'.format(title))
            self.mylog.error('{}测试用例通过'.format(title))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=9, value='通过')  # 回写测试结果
        finally:
            self.excle.write(row=case_id + 1, column=8, value=res)  # 回写实际结果
Пример #5
0
    def test_register(self, case):
        # 第一步:准备测试数据和入参
        excepted = case.excepted
        url = my_conf.get('url', 'url') + case.url + case.interface
        # 替换动态化参数
        random_phone = self.random_phone()
        case.data = case.data.replace("*phone*", random_phone)
        request_data = eval(case.data)

        # 第二步:发送接口请求
        res = HTTPRequest().request(case.method, url, request_data)

        # 第三步:比对结果
        try:
            self.assertEqual(json.loads(excepted), res.json())
            try:
                if case.check_sql:
                    logger.debug("此条用例走了if语句")
                    count = self.db.find_count(
                        case.check_sql.replace("*phone*", random_phone))
                    self.assertEqual(1, count)
                    logger.info("测试数据为:1")
                    logger.info("期望结果是:{}".format(count))
                else:
                    logger.debug("此条用例没有走if语句")
            except AssertionError as e:
                logger.exception(e)
                raise e
        except AssertionError as e:
            self.do_excel.write_data(case.case_id + 1, 8, "Fail")
            logger.info("测试数据为:{}".format(request_data))
            logger.info("期望结果是:{}".format(excepted))
            logger.info("实际结果是:{}".format(res.json()))
            logger.exception(e)
            raise e
        else:
            self.do_excel.write_data(case.case_id + 1, 8, "Pass")
            logger.info("测试数据为:{}".format(request_data))
            logger.info("期望结果是:{}".format(excepted))
            logger.info("实际结果是:{}".format(res.json()))
    def test(self, items):
        self.pr.userRegister()  # 注册
        rp = Replace(section1="userinfo")  # 创建替换对象
        case_id = items.case_id  # 获取用例编号
        url = ob.getstr('url', 'url') + items.url
        data = items.data  # 获取数据
        title = items.title  # 获取用例标题
        if "@uid@" in data:
            max_uid = self.mysql.select(rp.replace_data(items.check_sql))[0][0]
            print(max_uid)
            data = data.replace("@uid@", str(int(max_uid + 1)))  # 用最新uid去替换
        client = Client(url)  # 创建连接
        data = eval(rp.replace_data(data))  # 获取请求数据
        print("请求数据为:", data)
        except_result = str(items.except_result)
        print('第{}条测试用例:{}开始执行'.format(case_id, title))
        re = client.service.verifyUserAuth(data)  # 发送请求
        acl_re = str(re.retCode)  # 获取实际结果
        print('实际结果:{}'.format(except_result), type(except_result))
        print('预期结果:{}'.format(acl_re), type(acl_re))
        print(dict(re))
        # 比对实际结果与预期结果
        try:
            self.assertEqual(except_result, acl_re)
            if items.check_sql:
                if items.title == "实名认证成功":
                    sql = rp.replace_data(items.check_sql)
                    slect_result = self.mysql.find_result(sql)  # 得到查询结果
                    self.assertEqual(1, slect_result)

        except AssertionError as e:
            print('{}用例测试未通过'.format(title))
            self.mylog.error('{}用例测试未通过'.format(title))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=8, value='未通过')  # 回写测试结果
            raise e  # 抛出异常
        else:
            print('{}用例测试通过'.format(title))
            self.mylog.info('{}用例测试通过'.format(title))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=8, value='通过')  # 回写测试结果
        finally:
            self.excle.write(row=case_id + 1, column=7, value=acl_re)  # 回写实际结果
Пример #7
0
    def test(self, items):
        rp = Replace()  # 创建替换对象

        # 获取测试用例的数据
        case_id = items.case_id  # 用例数据的编号
        title = items.title  # 用例的标题

        method = items.method  # 请求方法
        url = ob.getstr('url', 'url') + items.url  # 请求地址
        except_result = str(items.except_result)  # 获得预期结果
        data = items.data

        if "@memberId@" in items.data:
            max_memberId = self.mysql.select(sql="SELECT max(Id)From member",
                                             row=1)[0]  # 查到member表的最大标id
            data = data.replace("@memberId@", str(max_memberId + 100))
        data = eval(rp.replace_data(data))  # 替换后的申请数据
        print(data)

        print('第{}条用例开始执行:{}'.format(case_id, title))  # 打印信息
        self.mylog.info('第{}条用例开始执行:{}'.format(case_id, title))  # 写进日志
        # 发送请求获取实际结果
        res = HttpSession(url=url,
                          data=data).httprequest(method=method).json()['code']
        # 比对实际与预期结果
        print('预期结果:{}'.format(except_result))
        print('实际结果:{}'.format(res))
        try:
            self.assertEqual(except_result, res)
        except AssertionError as e:
            print('{}测试用例未通过'.format(title))
            self.mylog.error('{}测试用例未通过,未通过的信息为{}'.format(title, e))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=9, value='未通过')  # 回写测试结果
            raise e  # 抛出异常
        else:
            print('{}测试用例通过'.format(title))
            self.mylog.error('{}测试用例通过'.format(title))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=9, value='通过')  # 回写测试结果
        finally:
            self.excle.write(row=case_id + 1, column=8, value=res)  # 回写实际结果
Пример #8
0
    def test(self, items):
        rp = Replace()  # 创建替换对象

        # 获取测试用例的数据
        case_id = items.case_id  # 用例数据的编号
        title = items.title  # 用例的标题

        method = items.method  # 请求方法
        url = ob.getstr('url', 'url') + items.url  # 请求地址
        except_result = str(items.except_result)  # 获得预期结果
        data = items.data

        if items.check_sql:
            result1 = self.mysql.find_result(rp.replace_data(
                items.check_sql))  # 查询投资之前invest投资该标记录的个数
            amount = self.mysql.select(
                "SELECT LeaveAmount FROM member WHERE MobilePhone= '{}'".
                format(getattr(ConText, 'phone')))[0][0]  # 查询投资用户投资之前的余额
        if "@memberId@" in items.data:
            max_memberid = self.mysql.select(sql="SELECT max(Id)From member",
                                             row=1)[0]  # 查到用户表的最大id
            data = data.replace("@memberId@", str(max_memberid + 100))
        if "@loanId@" in items.data:
            max_loanId = self.mysql.select(sql="SELECT max(Id)From loan",
                                           row=1)[0]  # 查到loan表的最大标id
            data = data.replace("@loanId@", str(max_loanId + 100))
        data = eval(rp.replace_data(data))  # 替换后的申请数据
        print(data)

        print('第{}条用例开始执行:{}'.format(case_id, title))  # 打印信息
        self.mylog.info('第{}条用例开始执行:{}'.format(case_id, title))  # 写进日志
        # 发送请求获取实际结果
        res = HttpSession(url=url,
                          data=data).httprequest(method=method).json()['code']
        # 比对实际与预期结果
        print('预期结果:{}'.format(except_result))
        print('实际结果:{}'.format(res))
        try:
            self.assertEqual(except_result, res)
            if items.check_sql:  # 如果需要数据库校验
                select_result = self.mysql.find_result(
                    rp.replace_data(items.check_sql))  # 得到投资之后结果
                amount1 = self.mysql.select(
                    "SELECT LeaveAmount FROM member WHERE MobilePhone= '{}'".
                    format(getattr(ConText, 'phone')))[0][0]  # 查询投资用户投资之后的余额
                bd_amount = Decimal(str(data['amount']))  # 拿到充值金额
                self.assertEqual(1, select_result - result1)  # 比对查询的结果与预期的结果
                self.assertEqual(bd_amount,
                                 amount - amount1)  # 比对余额的减少是否与投资的金额相等

        except AssertionError as e:
            print('{}测试用例未通过'.format(title))
            self.mylog.error('{}测试用例未通过,未通过的信息为{}'.format(title, e))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=9, value='未通过')  # 回写测试结果
            raise e  # 抛出异常
        else:
            print('{}测试用例通过'.format(title))
            self.mylog.error('{}测试用例通过'.format(title))  # 打印日志信息
            self.excle.write(row=case_id + 1, column=9, value='通过')  # 回写测试结果
        finally:
            self.excle.write(row=case_id + 1, column=8, value=res)  # 回写实际结果