Ejemplo n.º 1
0
    def test_audit(self, case):
        # 准备数据
        url = conf.get('env', 'url') + case.url
        case.data = replace(case.data)

        # 测试用例中有*mloanId*需要替换,用例为标的为不存在
        sql = "select max(id) from member;"
        if "*loanId*" in case.data:
            # 获取数据库中最大的标id进行加一,然后进行替换
            memberId = self.db.find_one(sql)[0]
            memberId += 1
            # 替换
            case.data = case.data.replace("*loanId*", str(loanId))

        # 发送请求获取结果
        response = self.request.request(method=case.method,
                                        url=url,
                                        data=eval(case.data))
        code = response.json()['code']

        if response.json()['msg'] == "加标成功":
            sql = "select id from loan where memberId=#memberId# order by id desc limit 1;"
            replace(sql)
            loan_id = self.db.find_one(sql)
            setattr(ConText, "loan_id", str(loan_id))

        # 对比结果
        try:
            self.assertEqual(str(case.excepted), code)

            # 获取加标后标的数量
            if case.check_sql:
                # 获取加标前的标数量
                case.check_sql = replace(case.check_sql)
                status = self.db.find_count(case.check_sql)
                self.assertEqual(eval(case.data)['status'], status)

        except AssertionError as e:
            # 测试未通过,输出日志
            logger.error(e)
            # 在excel用例中写入结果
            self.wb.write_data(row=case.case_id + 1,
                               column=9,
                               msg=response.text)
            self.wb.write_data(row=case.case_id + 1, column=8, msg='failed')
            raise e
        else:
            self.wb.write_data(row=case.case_id + 1,
                               column=9,
                               msg=response.text)
            # 在excel用例中写入结果
            self.wb.write_data(row=case.case_id + 1, column=8, msg='pass')
Ejemplo n.º 2
0
    def test_add(self,case):
        # 准备数据
        url = conf.get('env','url')+case.url
        case.data = replace(case.data)

        # 测试用例中有*memberId*需要替换,用例为标的为不存在
        sql = "select max(id) from member;"
        if "*memberId*" in case.data:
            # 获取数据库中最大的用户id进行加一,然后进行替换
            memberId = self.db.find_one(sql)[0]
            memberId += 1
            # 替换
            case.data = case.data.replace("*memberId*",str(memberId))

        # 判断该用例是否需要校验sql
        if case.check_sql:
            case.check_sql = replace(case.check_sql)
            # 获取加标前的标数量
            s_count = self.db.find_count(case.check_sql)
Ejemplo n.º 3
0
    def test_reister(self, case):
        # 你用例参数化
        # 注册:先去数据库查是否存在,存在则从新生成
        if "#reister_phone#" in case.data:
            # 替换测试的号码
            while True:
                phone = rand - phone()
                # 查询数据库该号码是否存在
                self.db.find_count(
                    "select * from meber where MobilePhone={}".format(phone))
                if count == 0:
                    break
            case.data.replace('#reister_phone#', phone)
        # 已经注册过的,从数据库获取张海波
        if "#phone#" in case.data:
            phone = self.db.find_one("select * from meber limit 1")[0]
            case.data.replace('#phone#', phone)
        # 充值取现之前需要登录加登录账号可配置再配置文件
        # 方法二、获取数据库最大值加1,或最新值减1

        # 发送请求获取结果
        response = self.request.request(method=case.method,
                                        url=case.url,
                                        data=eval(case.data))
        try:
            # 预期的结果case.excepted  实际结果response.text
            logger.info('预期结果:{},实际结果:{}'.format(case.excepted, response.text))
            self.assertEqual(case.excepted, response.text)
        except AssertionError as e:
            # 测试未通过,输出日志
            logger.error(e)
            # 在excel用例中写入结果
            self.wb.write_data(row=case.case_id + 1, column=8, msg='failed')
            raise e
        else:
            # 测试通过,输出日志
            logger.info('测试用例:{}已通过'.format(case.title))
            # 在excel用例中写入结果
            self.wb.write_data(row=case.case_id + 1, column=8, msg='pass')
Ejemplo n.º 4
0
        if case.check_sql:
            # 获取sql语句
            key = tuple(eval(case.check_sql).keys())[0]
            # 执行sql语句
            result = DbConfig(key).find_one(eval(case.check_sql)[key])
            # 判断##在url里面,对url进行替换
            if '##' in case.url:
                case.url = str(case.url).replace('##', str(result['id']))
            # 判断是否在参数里面,如果在对参数进行替换
            if '*exchangeaction*' in str(case.data):
                case.data = eval(case.data)
                case.data['exchangeActionIds'] = str(result['id'])
                case.data = str(case.data)
        if '*tag*' in case.data:
            ramdit_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
            case.data = case.data.replace('*tag*', str(ramdit_time))
        # 判断是否存在参数
        # if case.data:
        # 进行替换参数中需要替换的参数

        case.data = replace(case.data)
        # 如果url里面存在?,数据是data类型
        if '?' in case.url:
            if case.method == 'post':
                response = self.request.request(method=case.method,
                                                data=eval(case.data),
                                                url=case.url)
        # # 没有,数据类型为json类型
            else:
                response = self.request.request(method=case.method,
                                                json=eval(case.data),
Ejemplo n.º 5
0
    # 登陆测试用例
    @data(*cases)
    def test_customer(self, case):
        # 获取用例在execl中的位置
        self.row = case.case_id + 1

        # 修改url
        if '?' in case.url:
            case.url = conf.get('env', 'open_url') + case.url + getattr(
                TestCaseData, 'accessToken')
        else:
            case.url = conf.get('env', 'open_url') + case.url

        if '*now*' in case.data:
            case.data = case.data.replace('*now*',
                                          str(int(time.time() * 10000)))

        if '*phone*' in case.data:
            case.data = case.data.replace(
                '*phone*', '152' + str(random.randint(10000000, 99999999)))

        # 对存在关键词的内容进行替换
        case.data = replace(case.data)
        # post请求链接中存在?,为data格式。put请求链接中存在?,为json格式

        response = self.request.request(method=case.method,
                                        json=eval(case.data),
                                        url=case.url)

        # 断言
        if 'accessToken' in str(response.json()):