コード例 #1
0
ファイル: testqcd_05_invest.py プロジェクト: zxy426/LenmonZX
    def test_invest(self, cases):

        # 第一步:准备数据
        # 获取用例行号
        row = cases.caseid + 1
        # 获取请求参数
        par = Parameterization.parmse_all(cases.datas)
        # 获取url
        invest_url = do_yuml.read_yuml('request', 'url') + cases.url
        # 获取预期结果
        expected = cases.expected
        # 获取标题
        msg = cases.title

        # 第二步:调用投资接口,进行投资
        res = self.request.send(invest_url, method=cases.method, data=par)
        actuall = res.json()
        # 第三步:比对预期与实际结果
        try:
            self.assertEqual(expected, actuall.get('code'), msg=msg)
        except AssertionError as e:
            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml('msg', 'fail_result'))

            do_log.error('{},执行测试用例的具体异常为{}'.format(msg, e))
            raise e
        else:

            if 'token_info' in res.text:
                token = actuall['data']['token_info']['token']  # 在获取响应结果的字典数据,从中查找token_info
                new_header = {"Authorization": "Bearer " + token}  # 获取请求的token值
                self.request.add_hesders(new_header)  # 将获取到的token值加更新到请求头中

            # check_sql=cases.check_sql
            # if check_sql:
            #     sql=Parameterization.parmse_all(check_sql)
            #     res_sql=self.do_sql.run(sql)
            #     loan_id=res_sql['id']
            #     setattr(Parameterization,'a',loan_id)


            # # 获取loan_id
            if cases.caseid == 2:
                loan_id = actuall.get('data').get('id')  # 获取响应的json数据中的data,再获取它下面的id
                setattr(Parameterization, 'loan_id', loan_id)  ## 动态创建属性的机制, 来解决接口依赖的问题

            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml('msg', 'success_result'))
            do_log.info('{},测试用例执行成功'.format(msg))
        finally:
            # 将响应的结果反写到excel的actall这一列中
            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'case_result'),
                                   value=res.text)
コード例 #2
0
ファイル: testqcd_02_login.py プロジェクト: zxy426/LenmonZX
    def test_login(self, cases):
        #第一步:准备工作
        #获取用例行号
        row = cases.caseid + 1
        #获取参数
        par = Parameterization.parmse_all(cases.datas)
        #获取url
        login_url = do_yuml.read_yuml('request', 'url') + cases.url
        #获取预期结果
        expected = json.loads(
            cases.expected,
            encoding='utf8')  #因为用例是json格式的字符串通过loads转换为Python中的字典
        #获取用例标题
        msg = cases.title

        #第二步:调用登录接口发送请求
        res = self.request.send(login_url, method=cases.method, data=par)
        actuall = res.json()

        #第三步:预期与实际进行对比
        try:
            #用例中的多断言对比就是按照顺序,在异常处理中进行多次断言比较
            self.assertEqual(expected['code'], actuall['code'], msg=msg)
            self.assertEqual(expected['msg'], actuall['msg'], msg=msg)
        except AssertionError as e:
            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml(
                                       'msg', 'fail_result'))
            do_log.error("{},执行测试的具体的异常为:{}\n".format(msg, e))
            raise e

        else:
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml(
                                       'msg', 'success_result'))
            do_log.info('{},执行用例通过'.format(msg))
        finally:
            # 将响应的结果反写到excel的actall这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml(
                                       'excel', 'case_result'),
                                   value=res.text)
コード例 #3
0
ファイル: testqcd_04_add.py プロジェクト: zxy426/LenmonZX
    def test_add(self, cases):
        # 第一步:准备数据
        # 获取用例行号
        row = cases.caseid + 1
        # 获取请求参数
        par = Parameterization.parmse_all(cases.datas)
        # 获取url
        add_url = do_yuml.read_yuml('request', 'url') + cases.url
        # 获取预期结果
        expected = cases.expected  # 因为用例是json格式的字符串通过loads转换为Python中的字典
        # 获取标题
        msg = cases.title

        # 第二步:发送加标请求,获取响应结果
        res = self.request.send(add_url, method=cases.method,data=par)
        actuall = res.json()  # 将响应结果转换为json格式的数据

        # 第三步:对比预期与实际结果
        try:
            self.assertEqual(expected, actuall.get('code'), msg=msg)
        except AssertionError as e:
            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml('msg', 'fail_result'))

            do_log.error('{},断言的具体异常为{}\n'.format(msg, e))
            raise e
        else:
            if cases.caseid == 2:  # 默认登录接口登录成功
                # 取值登录的token
                token = actuall['data']['token_info']['token']
                # 更新请求头
                new_header = {'Authorization': 'Bearer ' + token}
                # 将更新的请求头加的默认的请求头中,有则更新,无则添加
                self.request.add_hesders(new_header)

            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml('msg', 'success_result'))
            do_log.info('{},测试用例执行通过'.format(msg))

        finally:
            # 将响应的结果反写到excel的actall这一列中
            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'case_result'),
                                   value=res.text)
コード例 #4
0
    def test_register(self,cases):

    #获取用例的行号
        row=cases.caseid+1
    #获取用例的参数
        par=Parameterization.parmse_all(cases.datas)
    #获取用例的url
        register_url=do_yuml.read_yuml('request','url')+cases.url
    #获取用例的期望结果
        expected=cases.expected
    #获取用例标题
        msg=cases.title

    #第二步:调用请求接口,发送请求,执行注册
        res=self.do_request.send(url=register_url,method=cases.method,data=par,is_json=True)#这里的method=cases.method跟is_json=True因为是默认参数,可以省略不写
        data_json=res.json()#将响应报文转化为json的字典数据

    #第三步:预期与实际结果进行比较
        try:
            # assertEqual第三个参数为用例执行失败之后的提示信息
            # assertEqual第一个参数为期望值, 第二个参数为实际值
            self.assertEqual(expected,data_json['code'],msg=msg)#预期与实际的2个code进行对比
        except AssertionError as e:
            #将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml('excel','result'),
                                   value=do_yuml.read_yuml('msg','fail_result'))
            do_log.error("{},执行测试的具体的异常为:{}\n".format(msg,e))
            raise e
        else:
            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml('msg', 'success_result'))
            do_log.info('{},执行用例通过'.format(msg))
        finally:
            # 将响应的结果反写到excel的actall这一列中
            self.excel.write_excel(han=row, column=do_yuml.read_yuml('excel', 'case_result'), value=res.text)
コード例 #5
0
    def test_rechargd(self, cases):
        ##第一步:准备工作
        #获取用例行号
        row = cases.caseid + 1
        #获取参数
        par = Parameterization.parmse_all(cases.datas)
        #获取url
        rechargd_url = do_yuml.read_yuml('request', 'url') + cases.url
        #获取预期结果
        expected = cases.expected
        #获取用例标题
        msg = cases.title
        check_sql = cases.check_sql  # 取出check_sql
        if check_sql:  # 如果check_sql不为空, 则代表当前用例需要进行数据校验
            check_sql = Parameterization.parmse_all(
                check_sql)  # 将check_sql进行参数化,根据sql查找数据库充值前的金额
            mysql_data = self.do_sql.run(check_sql)  # 执行sql
            amount_before = float(
                mysql_data['leave_amount'])  # 不是float类型, 也不是int类型, 是decimal类型
            # 由于使用float转化之后的数, 有可能小数位数超过2位, 需要使用round保留2位小数
            amount_before = round(amount_before, 2)


#第二步:调用充值接口发送请求
        res = self.request.send(rechargd_url, method=cases.method, data=par)
        actuall = res.json()

        #第三步:预期与实际进行对比
        try:
            #用例中的多断言对比就是按照顺序,在异常处理中进行多次断言比较
            self.assertEqual(expected, actuall['code'], msg=msg)
            if check_sql:
                check_sql = Parameterization.parmse_all(
                    check_sql)  # 前面的断言成功,获取充值后的金额
                mysql_data = self.do_sql.run(check_sql)  # 执行sql
                amount_after = round(float(mysql_data['leave_amount']),
                                     2)  # 不是float类型, 也不是int类型, 是decimal类型
                actual_amount = round(amount_after - amount_before,
                                      2)  #充值后的金额减去充值钱的金额获取差值,保留2位小数进行断言

                one_dict = json.loads(par,
                                      encoding='utf8')  #将json的字符串转化为Python的字典
                recharge_amount = one_dict['amount']  #获取充值的金额
                self.assertEqual(recharge_amount,
                                 actual_amount,
                                 msg="实际充值金额与数据库存储金额不符")
        except AssertionError as e:
            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml(
                                       'msg', 'fail_result'))
            do_log.error("{},执行测试的具体的异常为:{}\n".format(msg, e))
            raise e

        else:
            # 默认充值接口的第二条测试用例登录成功
            if cases.caseid == 2:
                # 取值登录的token
                token = actuall['data']['token_info']['token']
                # 更新header的请求头
                new_header = {'Authorization': 'Bearer ' + token}
                self.request.add_hesders(new_header)
            # 将用例的实际结果写到excel的result这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml('excel', 'result'),
                                   value=do_yuml.read_yuml(
                                       'msg', 'success_result'))
            do_log.info('{},执行用例通过'.format(msg))
        finally:
            # 将响应的结果反写到excel的actall这一列中
            self.excel.write_excel(han=row,
                                   column=do_yuml.read_yuml(
                                       'excel', 'case_result'),
                                   value=res.text)