示例#1
0
class TestRecharge(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        do_logger.info('\n{:=^40s}\n'.format('开始执行用例'))

    @classmethod
    def tearDownClass(cls):
        do_logger.info('\n{:=^40s}\n'.format('用例执行结束'))

    def setUp(self):
        pass

    def tearDown(self):
        wb, ws = self.my_HandleExcel.load_excel()
        wb.save(DATA_COMMON_FILE_PATH)
        wb.close()
        do_request.request_close()

    @data(*cases_suite)
    def test_recharge(self, case_list):
        self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge')
        if case_list['check_sql']:
            before_sql_data = do_mysql.sql_search(
                case_list['check_sql'],
                virtue=eval(case_list['data'])['mobilephone'])
            self.before_leaveamount = float(before_sql_data['LeaveAmount'])
        request_result = do_request.send_request(
            case_list['method'],
            do_config.get_value('request', 'default_address') +
            case_list['url_path'], case_list['data'])
        actual = int(request_result.json().get('code'))
        result = case_list['expected']
        msg = case_list['title']
        try:
            self.assertEqual(result, actual, msg)
            if case_list['check_sql']:
                after_sql_data = do_mysql.sql_search(
                    case_list['check_sql'],
                    virtue=eval(case_list['data'])['mobilephone'])
                after_leaveamount = float(after_sql_data['LeaveAmount'])
                true_results = after_leaveamount - self.before_leaveamount
                self.assertEqual(
                    eval(case_list['data'])['amount'], round(true_results, 2),
                    msg)
            print('{},执行结果为:{}'.format(msg, true_result))
            self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                             true_result)
            do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
        except AssertionError as e:
            print('具体异常为{}'.format(e))
            self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                             fail_result)
            do_logger.error("{}, 执行结果为: {},具体异常为{}".format(
                msg, fail_result, e))
            raise e
示例#2
0
def excel_suite():
    not_existed_tel = do_mysql.not_existed_tel()
    register_excel = HandleExcel(DATA_COMMON_FILE_PATH, 'login')
    register_excel_cases = register_excel.get_cases()
    register_excel_re = re.sub(r'\${not_existed_tel}', not_existed_tel, str(register_excel_cases))
    existed_tel = do_mysql.existed_tel()
    register_cases = re.sub(r'\${existed_tel}', existed_tel, str(register_excel_re))
    register_cases = eval(register_cases)
    wb, ws = register_excel.load_excel()
    wb.close()
    return register_cases
示例#3
0
def excel_suite():
    register_excel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge')  # 实例化对象
    register_excel_cases = register_excel.get_cases()  # 获取excel测试用例
    register_cases = HandleContext.not_existed_tel(
        HandleContext.investors_user_pwd(
            HandleContext.investors_user_tel(
                str(register_excel_cases))))  # 执行参数化替换
    register_cases = eval(register_cases)
    wb, ws = register_excel.load_excel()
    wb.close()
    return register_cases
def excel_suite():
    register_excel = HandleExcel(DATA_COMMON_FILE_PATH, 'add')  # 实例化对象
    register_excel_cases = register_excel.get_cases()  # 获取excel测试用例
    register_cases = HandleContext.borrower_user_id(
        HandleContext.manager_user_pwd(
            HandleContext.manager_user_tel(
                str(register_excel_cases))))  # 执行参数化替换
    register_cases = eval(register_cases)
    wb, ws = register_excel.load_excel()
    wb.close()
    return register_cases
示例#5
0
class TestLogin:
    obj_li = HandleExcel('login')
    cases = obj_li.read_excel()

    # @classmethod
    # def setUpClass(cls) -> None:
    #     cls.hr = HandleRequests()
    #     cls.hm = HandleMysql()
    #     cls.hr.common_heads({hy.read_yaml('request', 'request_head'): hy.read_yaml('request', 'request_value')})
    #
    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.hr.close()
    #     cls.hm.close()
    @pytest.mark.parametrize('case', cases)
    def test_login(self, set_up, case):
        url = hy.read_yaml('request', 'base_url') + case.url
        if case.caseId == 2:
            HandlePhone.phone_yaml()
        data = HandleRe.handle_para(case.data)
        res = set_up[0].send(url=url, data=data)
        try:
            self.obj_li.write_excel(int(case.caseId) + 1,
                                    8,
                                    value=str(res.json()))
            assert [case.expected,
                    case.msg] == [res.json()['code'],
                                  res.json()['msg']]
        except AssertionError as e:
            my_logger.error(f'用例{case.title}断言失败')
            self.obj_li.write_excel(int(case.caseId) + 1, 7, value='fail')
            raise e
        else:
            my_logger.info(f'用例{case.title}断言成功')
            self.obj_li.write_excel(int(case.caseId) + 1, 7, value='success')
示例#6
0
class TestCompany(unittest.TestCase):
    """
    测试公司信息
    """
    excel = HandleExcel("company")
    cases = excel.read_data_obj()
    s = handle_yaml.do_yaml

    @classmethod
    def setUpClass(cls):

        cls.do_request = HandleRequest()  # 创建HandleRequest对象
        cls.do_request.add_headers(do_yaml.read('api',
                                                'version'))  # 添加公共的请求头, url版本号

    @classmethod
    def tearDownClass(cls):
        cls.do_request.close()

    @data(*cases)
    def test_company(self, case):
        # 1. 参数化
        new_data = Parameterize.to_param(case.data)

        # 2. 拼接完整的url
        if case.case_id > 3:
            new_url = do_yaml.read(
                'api', 'prefix') + case.url + '/' + r'{invest_companyId}'
        else:
示例#7
0
class TestCaseRegister(unittest.TestCase):
    excel = HandleExcel('register')
    cases = excel.read_data()

    @data(*cases)
    def test_case_method(self, case):
        # 获取测试用例行号
        row = case.case_id + 1
        # 第一步 准备测试用例数据
        expected = eval(case.expected)
        data1 = eval(case.data)
        # 第二步 调用功能函数 获取实际结果
        res = register(*data1)
        # 第三步 比对预期结果和实际结果
        try:
            self.assertEqual(res, expected)
        except AssertionError as e:
            log.info('用例{}执行未通过'.format(case.title))
            self.excel.write_data(row=row,
                                  column=do_yaml.read('excel', 'result_col'),
                                  value=do_yaml.read('msg', 'fail_result'))
            log.error(f"断言异常:{e}")
            raise e
        else:
            log.info('用例{}执行通过'.format(case.title))
            self.excel.write_data(row=row,
                                  column=do_yaml.read('excel', 'result_col'),
                                  value=do_yaml.read('msg', 'success_result'))
示例#8
0
class TestProduct(unittest.TestCase):
    """
    测试产品功能
    """
    excel = HandleExcel("supplier")
    cases = excel.read_data_obj()
    s = handle_yaml.do_yaml

    @classmethod
    def setUpClass(cls):

        cls.do_request = HandleRequest()  # 创建HandleRequest对象
        cls.do_request.add_headers(do_yaml.read('api',
                                                'version'))  # 添加公共的请求头, url版本号

    @classmethod
    def tearDownClass(cls):
        cls.do_request.close()

    @data(*cases)
    def test_product(self, case):
        # 1. 参数化
        new_data = Parameterize.to_param(case.data)

        # 2. 拼接完整的url
        if case.case_id == 4:
            mysql = HandleMysql()
            ss = mysql.run(do_yaml.read('mysql', 'select_product_id'))
            new_url = do_yaml.read('api', 'prefix') + case.url + ss['id']
            mysql.close()
        else:
示例#9
0
class CaseSend(unittest.TestCase):
    """
     发送验证码用例
    """
    do_log = HandleLogging().get_logger()
    do_excel = HandleExcel(TEST_DATAS_FILE_PATH2, sheetname='sendMCode')
    case_list = do_excel.get_cases()

    @classmethod
    def setUpClass(cls):
        cls.do_log.info("\n{:=^40}".format("开始执行用例"))
        cls.send_request = HandleSuds()

    @classmethod
    def tearDownClass(cls):
        cls.do_log.info("\n{:=^40}".format("用例执行结束"))

    @data(*case_list)
    def test_sendMCode(self, one_case):
        self.do_log.info("\nRunning Testing Methon:{}".format(inspect.stack()[0][3]))
        new_data = Context.sendmcode_parameterization(one_case.data)

        res = self.send_request(url=one_case.url, api=one_case.api, data=new_data)

        actual_result = str(res)
        expect_result = one_case.expected
        try:
            self.assertEqual(expect_result, actual_result, msg="测试{}失败".format(one_case.title))
        except AssertionError as e:
            self.do_log.error("具体异常为:{}".format(e))
            self.do_excel.write_result(row=one_case.case_id + 1, actual=str(res), result='Fail')
            raise e
        else:
            self.do_excel.write_result(row=one_case.case_id + 1, actual=str(res), result='pass')
示例#10
0
class TestInvest:
    obj_li = HandleExcel('invest')
    cases = obj_li.read_excel()

    @pytest.mark.parametrize('case', cases)
    def test_invest(self, set_up, case):
        url = hy.read_yaml('request', 'base_url') + case.url
        data = HandleRe.handle_para(case.data)
        res = set_up[0].send(url=url, data=data)
        if case.caseId == 2:
            invest_token = res.json()['data']['token_info']['token']
            set_up[0].common_heads({'Authorization': 'Bearer ' + invest_token})
        try:
            self.obj_li.write_excel(int(case.caseId) + 1,
                                    8,
                                    value=str(res.json()))
            assert [case.expected,
                    case.msg] == [res.json()['code'],
                                  res.json()['msg']]
        except AssertionError as e:
            my_logger.error(f'用例{case.title}断言失败')
            self.obj_li.write_excel(int(case.caseId) + 1, 7, value='fail')
            raise e
        else:
            my_logger.info(f'用例{case.title}断言成功')
            self.obj_li.write_excel(int(case.caseId) + 1, 7, value='success')
示例#11
0
class TestCaseLogin(unittest.TestCase):

    do_request = HandleRequest()

    do_config = HandleConfig(CONFIG_REQUEST)

    do_excel = HandleExcel(DATA_CASES, 'login')
    cases = do_excel.get_cases()

    do_log = HandleLog

    do_re = Handle_Re

    pass_result = do_config.get_value('result', 'pass_result')

    fail_result = do_config.get_value('result', 'fail_result')

    @classmethod
    def setUpClass(cls):
        cls.one_file = open(REPORTS_ALL_PATH, mode='a+', encoding='utf-8')
        cls.one_file.write('{:=^40s}\n'.format('开始执行登录接口用例'))

    @classmethod
    def tearDownClass(cls):
        cls.one_file.write('{:=^40s}\n\n'.format('登录接口用例执行结束'))
        cls.one_file.close()

    @data(*cases)
    def test_login(self, one_case):
        # 拼接完整的url
        new_url = self.do_config.get_value('url', 'head_url') + one_case['url']
        # 获取请求方式
        method = one_case['method']
        # 获取input_data数据
        # input_data = one_case['input_data']
        # 对excel的input_data数据进行参数化
        new_data = self.do_re.login_parameterization(one_case['input_data'])
        # 发送请求接收请求后的结果
        result_real = self.do_request.send_request(url=new_url,
                                                   data=eval(new_data),
                                                   method=method).text

        try:
            self.assertIn(one_case['expected'], result_real, msg='登录接口请求成功')
            self.one_file.write('{},执行的结果为:{}\n'.format(
                one_case['title'], self.pass_result))
            self.do_excel.write_cell(row=one_case['case_id'] + 1,
                                     column=7,
                                     actual=result_real,
                                     result=self.pass_result)
        except AssertionError as err:
            self.one_file.write('{}执行的结果为:{},具体的异常为:{}\n'.format(
                one_case['title'], self.fail_result, err))
            self.do_excel.write_cell(row=one_case['case_id'] + 1,
                                     column=7,
                                     actual=result_real,
                                     result=self.fail_result)
            raise err
        self.do_request.close_request()
示例#12
0
class TestRegister(unittest.TestCase):
    # read = HandleExcel(os.path.join(DATAS_DIR, do_yaml.read_yaml('excel', 'cases_path')), 'register')
    # 可以在模块中直接写好文件路径,这里只传表单名就可
    excel = HandleExcel('register')
    cases = excel.read_data_obj()

    @classmethod
    def setUpClass(cls):
        cls.do_request = HandleRequest()
        # 添加请求头
        cls.do_request.add_headers(do_yaml.read_yaml('api', 'version'))

    @classmethod
    def tearDownClass(cls):
        cls.do_request.close()

    @data(*cases)
    def test_register(self, case):
        expected = case.expected
        # 参数化,将取出来的字符串进行手机号替换(如果需要的话)
        data_str = HandleParam.to_param(case.data)

        # 拼接url
        url = do_yaml.read_yaml('api', 'url') + case.url

        # 将此处的功能模块替换为接口请求
        res = self.do_request.send(url=url,
                                   method=case.request_method,
                                   data=data_str)
        result = res.json()
        msg = case.title
        success_msg = do_yaml.read_yaml('msg', 'success_result')
        fail_msg = do_yaml.read_yaml('msg', 'fail_result')
        row = case.case_id + 1

        # assertEqual第三个参数为用例执行失败之后的提示信息
        try:
            self.assertEqual(expected, result['code'], msg=msg)
        except AssertionError as e:
            # 将用例执行结果写入到result_col列
            do_log.info('{}用例执行有误'.format(case.title))
            self.excel.write_data(row=row,
                                  column=do_yaml.read_yaml(
                                      'excel', 'result_col'),
                                  value=fail_msg)
            do_log.error('具体异常为{}'.format(e))
            raise e
        else:
            do_log.info('{}用例执行通过'.format(case.title))
            self.excel.write_data(row=row,
                                  column=do_yaml.read_yaml(
                                      'excel', 'result_col'),
                                  value=success_msg)
        finally:
            # 将响应实际结果写入到actual_col列
            self.excel.write_data(row=row,
                                  column=do_yaml.read_yaml(
                                      'excel', 'actual_col'),
                                  value=res.text)
示例#13
0
class TestRegister(unittest.TestCase):
    # 创建handleexcel对象
    do_excel = HandleExcel(do_yaml.get_data("excel", "filename"), "register")
    testcases_data = do_excel.read_data()  # 嵌套用例excel对象的列表

    @classmethod
    def setUpClass(cls):
        # 构造请求参数
        cls.do_request = HandleRequest()  # 创建HandleRequest对象
        cls.do_request.add_headers(do_yaml.get_data(
            "api", "api_version"))  # 添加请求头到公共请求头

        cls.do_mysql = HandleMysql()  # 创建HandleMysql对象
        # cls.do_mysql.create_not_existed_mobile()
        do_log.info("开始执行用例")

    @classmethod
    def tearDownClass(cls):
        # 释放资源
        cls.do_request.close()
        cls.do_mysql.close()
        do_log.info("用例执行结束")

    @ddt.data(*testcases_data)
    def test_register(self, one_testcase):
        # 在每条用例执行之前,获取未注册的手机号码,然后更新全局数据池
        setattr(GlobalData, "${not_existed_tel}",
                self.do_mysql.create_not_existed_mobile())

        # 将excel中读取的请求参数进行参数化
        new_data = Parameterize.to_parma(one_testcase.data)
        # 拼接请求URL地址
        new_url = do_yaml.get_data("api", "base_url") + one_testcase.url
        # 发送接口请求方法
        res = self.do_request.send(one_testcase.method, new_url, json=new_data)
        # 获取接口返回数据中的code值
        real_code = res.json()["code"]
        # row = testcase_dict["id"] + 1
        # self.do_excel.write_data(row, 7, res.text)
        # name = testcase_dict["name"]
        try:
            # 断言:预期结果==实际结果,断言结果
            self.assertEqual(one_testcase.expected_value, real_code,
                             one_testcase.name)
        except AssertionError as e:
            # print("此处需要使用日志器来记录日志!")
            # my_logger.error(f"{one_testcase.name}:具体异常为{e}")
            # 此处使用日志器来记录日志!
            do_log.error(f"{one_testcase.name}:具体异常为{e}")
            # print(f"具体异常为:{e}")
            # self.do_excel.write_data(row, 8, "失败")
            # 把执行结果写入excel中“actual"和”result“
            self.do_excel.write_data(one_testcase, res.text, "失败")
            raise e
        else:
            # self.do_excel.write_data(row, 8, "成功")
            # do_log.debug(res.text)
            # 把执行结果写入excel中“actual"和”result“
            self.do_excel.write_data(one_testcase, res.text, "成功")
示例#14
0
 def setUpClass(cls):
     setattr(Context, "db_name", "user_db")
     cls.request = WebServiceRequests()
     cls.my_excel = HandleExcel()
     cls.handle_sql = HandleMySql()
     cls.my_excel.get_exist_excel(
         os.path.join(RESULT_EXCEL_FILE_PATH, "my_result.xlsx"))
     cls.case_list = []
示例#15
0
class TestRegister(unittest.TestCase):
    handleExcel = HandleExcel(DATA_CASES, 'register')
    cases = handleExcel.get_cases()

    do_config = HandleConfig(CONFIG_REQUEST)
    head_url = do_config.get_value('url', 'head_url')
    do_request = HandleRequest()

    # 用例执行通过信息
    pass_result = do_config.get_value('result', 'pass_result')
    # 用例执行不通过信息
    fail_result = do_config.get_value('result', 'fail_result')

    do_re = Handle_Re()

    @classmethod
    def setUpClass(cls):
        cls.one_file = open(REPORTS_ALL_PATH, mode='a+', encoding='utf-8')
        cls.one_file.write('{:=^40s}\n'.format('开始执行注册接口用例'))

    @classmethod
    def tearDownClass(cls):
        cls.one_file.write('{:=^40s}\n\n'.format('注册接口用例执行结束'))
        cls.one_file.close()

    @data(*cases)
    def test_register(self, one_case):

        # 注册接口的url
        new_url = self.head_url + one_case['url']

        # 对用例中的数据进行参数化
        new_data = self.do_re.register_parameterization(one_case['input_data'])

        method = one_case['method']

        # 发送注册接口的请求
        result_real = self.do_request.send_request(url=new_url,
                                                   data=eval(new_data),
                                                   method=method).text

        try:
            self.assertIn(one_case['expected'], result_real, msg='注册接口请求成功')
            self.one_file.write('{},执行的结果为:{}\n'.format(
                one_case['title'], self.pass_result))
            self.handleExcel.write_cell(row=one_case['case_id'] + 1,
                                        column=7,
                                        actual=result_real,
                                        result=self.pass_result)
        except AssertionError as err:
            self.one_file.write('{}执行的结果为:{},具体的异常为:{}\n'.format(
                one_case['title'], self.fail_result, err))
            self.handleExcel.write_cell(row=one_case['case_id'] + 1,
                                        column=7,
                                        actual=result_real,
                                        result=self.fail_result)
            raise err
        self.do_request.close_request()
示例#16
0
class TestRecharge:
    he = HandleExcel('recharge')
    list_obj = he.operate_excel()

    # @classmethod
    # def setUpClass(cls) -> None:
    #     cls.hr = HandleRequest()
    #     cls.hm = HandleMysql()
    #
    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.hr.close()
    #     cls.hm.close()
    @pytest.mark.parametrize('obj', list_obj)
    def test_recharge(self, set_up, obj):
        url = hy.read_yaml('excel', 'base_url') + obj.url
        request_data = HandleRe.get_data(data=obj.data)
        result_sql = obj.sql
        invest_phone = set_up[2].read_yaml("investor", 'mobile_phone')
        if result_sql:
            mysql_result = set_up[1].get_mysql_result(sql=result_sql,
                                                      args=invest_phone)
            if mysql_result[0]:
                before_amount = float(mysql_result[0])
            else:
                before_amount = 0
        result = set_up[0].send(url=url, data=request_data)
        if obj.caseId == 2:
            login_token = result.json()['data']['token_info']['token']
            set_up[0].common_head({"Authorization": "Bearer " + login_token})
        try:
            assert [obj.expected,
                    obj.msg] == [result.json()['code'],
                                 result.json()['msg']]
            if result_sql:
                mysql_result = set_up[1].get_mysql_result(sql=result_sql,
                                                          args=invest_phone)
                if mysql_result:
                    after_amount = float(mysql_result[0])
                    recharge_value = float(
                        result.json()['data']['leave_amount'])
                    assert after_amount - before_amount == recharge_value
        except AssertionError as e:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='fail')
            logger.error(e)
            raise e
        else:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='success')
            logger.info(f"用例{obj.title}执行通过")
        finally:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=8,
                                sheet_value=result.text)
示例#17
0
class TestRegister(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        do_logger.info('\n{:=^40s}\n'.format('开始执行用例'))

    @classmethod
    def tearDownClass(cls):
        do_logger.info('\n{:=^40s}\n'.format('用例执行结束'))

    def setUp(self):

        pass

    def tearDown(self):
        wb, ws = self.my_HandleExcel.load_excel()
        wb.save(DATA_COMMON_FILE_PATH)
        wb.close()

    @data(*cases_suite)
    def test_register(self, case_list):
        self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'register')
        request_result = do_request.send_request(
            case_list['method'],
            do_config.get_value('request', 'default_address') +
            case_list['url_path'], case_list['data'])
        actual_text = request_result.text
        actual_value = json.loads(actual_text)['code']
        actual = 'code: "{}",'.format(actual_value)
        result = case_list['expected']
        msg = case_list['title']
        try:
            self.assertEqual(result, actual, msg)
            print('{},执行结果为:{}'.format(msg, true_result))
            self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                             true_result)
            do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
        except AssertionError as e:
            print('具体异常为{}'.format(e))
            self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                             fail_result)
            do_logger.error("{}, 执行结果为: {},具体异常为{}".format(
                msg, fail_result, e))
            raise e
示例#18
0
 def test_login(self, case_list):
     self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'login')
     request_result = do_request.send_request(case_list['method'],
                                              do_config.get_value('request', 'default_address') + case_list[
                                                  'url_path'],
                                              case_list['data'])
     actual_text = request_result.text
     actual_value = json.loads(actual_text)['code']
     actual = 'code: "{}",'.format(actual_value)
     result = case_list['expected']
     msg = case_list['title']
     try:
         self.assertEqual(result, actual, msg)
         print('{},执行结果为:{}'.format(msg, true_result))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, true_result)
         do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
     except AssertionError as e:
         print('具体异常为{}'.format(e))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, fail_result)
         do_logger.error("{}, 执行结果为: {},具体异常为{}".format(msg, fail_result, e))
         raise e
示例#19
0
class TestLogin(unittest.TestCase):
    # 创建handleexcel对象
    do_excel = HandleExcel(do_yaml.get_data("excel", "filename"), "login")
    testcases_data = do_excel.read_data()  # 嵌套用例excel对象的列表

    @classmethod
    def setUpClass(cls):
        # 构造请求参数
        cls.do_request = HandleRequest()  # 创建HandleRequest对象

        cls.do_request.add_headers(do_yaml.get_data(
            "api", "api_version"))  # 添加请求头到公共请求头
        do_log.info("开始执行用例")

    @classmethod
    def tearDownClass(cls):
        # 释放资源
        cls.do_request.close()
        do_log.info("用例执行结束")

    @ddt.data(*testcases_data)
    def test_login(self, one_testcase):
        # 将excel中读取的请求参数进行参数化
        new_data = Parameterize.to_parma(one_testcase.data)
        # 拼接请求URL地址
        new_url = do_yaml.get_data("api", "base_url") + one_testcase.url
        # 发送接口请求方法
        res = self.do_request.send(one_testcase.method, new_url, json=new_data)

        # 获取响应数据并转化为字典类型
        actual_value = res.json()

        # 将expected_value期望值转化为字典类型
        expect_result = json.loads(one_testcase.expected_value,
                                   encoding='utf-8')
        try:
            # self.assertIn(one_testcase.expected_value,
            #               res.text,
            #               one_testcase.name)
            # 断言: 预期结果==实际结果,断言结果
            self.assertEqual(expect_result.get('code'),
                             actual_value.get('code'), one_testcase.name)
            self.assertEqual(expect_result.get('msg'), actual_value.get('msg'),
                             one_testcase.name)
        except AssertionError as e:
            # 此处使用日志器来记录日志!
            do_log.error(f"{one_testcase.name}:具体异常为{e}")
            # 把执行结果写入excel中“actual"和”result“
            self.do_excel.write_data(one_testcase, res.text, "失败")
            raise e
        else:
            # 把执行结果写入excel中“actual"和”result“
            self.do_excel.write_data(one_testcase, res.text, "成功")
示例#20
0
class TestRecharge:
    obj_li = HandleExcel('recharge')
    cases = obj_li.read_excel()

    # @classmethod
    # def setUpClass(cls) -> None:
    #     cls.hr = HandleRequests()
    #     cls.hm = HandleMysql()
    #     cls.hl = HandleYaml(PHONE_PATH)
    #     cls.hr.common_heads({hy.read_yaml('request', 'request_head'): hy.read_yaml('request', 'request_value')})
    #
    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.hr.close()
    #     cls.hm.close()
    @pytest.mark.parametrize("case", cases)
    def test_recharge(self, set_up, case):
        url = hy.read_yaml('request', 'base_url') + case.url
        data = HandleRe.handle_para(case.data)
        invest_phone = set_up[2].read_yaml('investor', 'mobile_phone')
        before_send_amount = 0
        if case.sql:
            phone_result = set_up[1].get_mysql_result(case.sql,
                                                      arg=invest_phone)
            if phone_result['amount']:
                before_send_amount = float(phone_result['amount'])
        res = set_up[0].send(url=url, data=data)
        if case.caseId == 2:
            invest_token = res.json()['data']['token_info']['token']
            set_up[0].common_heads({'Authorization': 'Bearer ' + invest_token})
        try:
            self.obj_li.write_excel(int(case.caseId) + 1,
                                    8,
                                    value=str(res.json()))
            if case.sql:
                after_send_amount = float(set_up[1].get_mysql_result(
                    case.sql, arg=invest_phone)['amount'])
                amount_num = round((after_send_amount - before_send_amount), 2)
                assert amount_num == eval(case.data)['amount']
            assert [case.expected,
                    case.msg] == [res.json()['code'],
                                  res.json()['msg']]
        except AssertionError as e:
            my_logger.error(f'用例{case.title}断言失败')
            self.obj_li.write_excel(int(case.caseId) + 1, 7, value='fail')
            raise e
        else:
            my_logger.info(f'用例{case.title}断言成功')
            self.obj_li.write_excel(int(case.caseId) + 1, 7, value='success')
示例#21
0
class TestRecharge(unittest.TestCase):
    do_excel = HandleExcel(do_yaml.get_data("excel", "filename"), "recharge")
    testcases_data = do_excel.read_data()  # 嵌套字典的列表

    @classmethod
    def setUpClass(cls):
        # 3、构造请求参数
        cls.do_request = HandleRequest()

        cls.do_request.add_headers(do_yaml.get_data("api", "api_version"))
        do_log.info("开始执行用例")

    @classmethod
    def tearDownClass(cls):
        cls.do_request.close()
        do_log.info("用例执行结束")

    @ddt.data(*testcases_data)
    def test_recharge(self, one_testcase):

        new_url = do_yaml.get_data("api", "base_url") + one_testcase.url
        # 1、在充值之前,查询当前用例的金额

        # 2、进行充值
        res = self.do_request.send(one_testcase.method,
                                   new_url,
                                   json=one_testcase.data)

        # real_code = res.json()["code"]
        try:
            self.assertIn(one_testcase.expected_value,
                          res.text,
                          one_testcase.name)
            # 3、查询充值成功之后的金额

        except AssertionError as e:
            # my_logger.error(f"{one_testcase.name}:具体异常为{e}")
            do_log.error(f"{one_testcase.name}:具体异常为{e}")
            self.do_excel.write_data(one_testcase, res.text, "失败")
            raise e
        else:
            # if one_testcase.id == 2:
            # a.如果响应报文中含有token_info,说明当前用例为登录接口用例
            # b.从响应报文中获取token,然后添加至请求头中
            if "token_info" in res.text:
                token = res.json()["data"]["token_info"]["token"]
                self.do_request.add_headers("Authorization", f"Bearer {token}")

            self.do_excel.write_data(one_testcase, res.text, "成功")
示例#22
0
 def test_recharge(self, case_list):
     self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge')
     if case_list['check_sql']:
         before_sql_data = do_mysql.sql_search(
             case_list['check_sql'],
             virtue=eval(case_list['data'])['mobilephone'])
         self.before_leaveamount = float(before_sql_data['LeaveAmount'])
     request_result = do_request.send_request(
         case_list['method'],
         do_config.get_value('request', 'default_address') +
         case_list['url_path'], case_list['data'])
     actual = int(request_result.json().get('code'))
     result = case_list['expected']
     msg = case_list['title']
     try:
         self.assertEqual(result, actual, msg)
         if case_list['check_sql']:
             after_sql_data = do_mysql.sql_search(
                 case_list['check_sql'],
                 virtue=eval(case_list['data'])['mobilephone'])
             after_leaveamount = float(after_sql_data['LeaveAmount'])
             true_results = after_leaveamount - self.before_leaveamount
             self.assertEqual(
                 eval(case_list['data'])['amount'], round(true_results, 2),
                 msg)
         print('{},执行结果为:{}'.format(msg, true_result))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                          true_result)
         do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
     except AssertionError as e:
         print('具体异常为{}'.format(e))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                          fail_result)
         do_logger.error("{}, 执行结果为: {},具体异常为{}".format(
             msg, fail_result, e))
         raise e
示例#23
0
class TestLogin(unittest.TestCase):
    do_excel = HandleExcel(do_yaml.get_data("excel", "filename"), "login")
    testcases_data = do_excel.read_data()  # 嵌套字典的列表

    @classmethod
    def setUpClass(cls):
        # 3、构造请求参数
        cls.do_request = HandleRequest()

        cls.do_request.add_headers(do_yaml.get_data("api", "api_version"))
        do_log.info("开始执行用例")

    @classmethod
    def tearDownClass(cls):
        cls.do_request.close()
        do_log.info("用例执行结束")

    @ddt.data(*testcases_data)
    def test_login(self, one_testcase):
        # 将excel中读取的请求参数进行参数化
        new_data = Parameterize.to_parma(one_testcase.data)

        new_url = do_yaml.get_data("api", "base_url") + one_testcase.url
        res = self.do_request.send(one_testcase.method, new_url, json=new_data)

        # 获取响应数据并转化为字典类型
        actual_value = res.json()

        # 将expected_value期望值转化为字典类型
        expect_result = json.loads(one_testcase.expected_value,
                                   encoding='utf-8')
        try:
            # self.assertIn(one_testcase.expected_value,
            #               res.text,
            #               one_testcase.name)
            self.assertEqual(expect_result.get('code'),
                             actual_value.get('code'), one_testcase.name)
            self.assertEqual(expect_result.get('msg'), actual_value.get('msg'),
                             one_testcase.name)
        except AssertionError as e:
            do_log.error(f"{one_testcase.name}:具体异常为{e}")
            self.do_excel.write_data(one_testcase, res.text, "失败")
            raise e
        else:
            self.do_excel.write_data(one_testcase, res.text, "成功")
class TestRegister:
    he = HandleExcel('register')
    list_obj = he.operate_excel()

    # @classmethod
    # def setUpClass(cls) -> None:
    #     cls.hr = HandleRequest()
    #     cls.hm = HandleMysql()
    #
    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.hr.close()
    #     cls.hm.close()

    @pytest.mark.parametrize('obj', list_obj)
    def test_register(self, set_up, obj):
        url = hy.read_yaml('excel', 'base_url') + obj.url
        request_data = HandleRe.get_data(data=obj.data)
        result = set_up[0].send(url=url, data=request_data)
        try:
            assert [obj.expected,
                    obj.msg] == [result.json()['code'],
                                 result.json()['msg']]
            if obj.caseId == 1:
                phone = result.json()['data']['mobile_phone']
                mysql_result = set_up[1].get_mysql_result(hy.read_yaml(
                    'mysql', 'sql'),
                                                          args=phone)
                assert mysql_result is not None
        except AssertionError as e:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='fail')
            logger.error(e)
            raise e
        else:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='success')
            logger.info(f"用例{obj.title}执行通过")
        finally:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=8,
                                sheet_value=result.text)
示例#25
0
class TestRegister(unittest.TestCase):
    do_excel = HandleExcel(do_yaml.get_data("excel", "filename"), "register")
    testcases_data = do_excel.read_data()  # 嵌套字典的列表

    @classmethod
    def setUpClass(cls):
        # 3、构造请求参数
        cls.do_request = HandleRequest()

        cls.do_request.add_headers(do_yaml.get_data("api", "api_version"))
        do_log.info("开始执行用例")

    @classmethod
    def tearDownClass(cls):
        cls.do_request.close()
        do_log.info("用例执行结束")

    @ddt.data(*testcases_data)
    def test_register(self, one_testcase):

        new_url = do_yaml.get_data("api", "base_url") + one_testcase.url
        res = self.do_request.send(one_testcase.method,
                                   new_url,
                                   json=one_testcase.data)

        real_code = res.json()["code"]
        # row = testcase_dict["id"] + 1
        # self.do_excel.write_data(row, 7, res.text)
        # name = testcase_dict["name"]
        try:
            self.assertEqual(one_testcase.expected_value, real_code,
                             one_testcase.name)
        except AssertionError as e:
            # print("此处需要使用日志器来记录日志!")
            # my_logger.error(f"{one_testcase.name}:具体异常为{e}")
            do_log.error(f"{one_testcase.name}:具体异常为{e}")
            # print(f"具体异常为:{e}")
            # self.do_excel.write_data(row, 8, "失败")
            self.do_excel.write_data(one_testcase, res.text, "失败")
            raise e
        else:
            # self.do_excel.write_data(row, 8, "成功")
            # do_log.debug(res.text)
            self.do_excel.write_data(one_testcase, res.text, "成功")
示例#26
0
class TestAdd:
    he = HandleExcel('add')
    list_obj = he.operate_excel()

    # @classmethod
    # def setUpClass(cls) -> None:
    #     cls.hr = HandleRequest()
    #     cls.hm = HandleMysql()
    #
    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.hr.close()
    #     cls.hm.close()
    @pytest.mark.parametrize('obj', list_obj)
    def test_add(self, set_up, obj):
        url = hy.read_yaml('excel', 'base_url') + obj.url
        request_data = HandleRe.get_data(data=obj.data)
        result = set_up[0].send(url=url, data=request_data)
        if obj.caseId == 2:
            login_token = result.json()['data']['token_info']['token']
            set_up[0].common_head({"Authorization": "Bearer " + login_token})
        try:
            assert [obj.expected,
                    obj.msg] == [result.json()['code'],
                                 result.json()['msg']]
        except AssertionError as e:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='fail')
            logger.error(e)
            raise e
        else:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='success')
            if obj.caseId == 3:
                loan_id = result.json()['data']['id']
                setattr(HandleRe, 'item_id', loan_id)
            logger.info(f"用例{obj.title}执行通过")
        finally:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=8,
                                sheet_value=result.text)
示例#27
0
class TestRegisterCase:
    he = HandleExcel(sheetname='register')
    obj_li = he.read_excel()

    # @classmethod
    # def setUpClass(cls):
    #
    #     cls.hr.common_head(hy.read_yaml('api', 'header'))

    @pytest.mark.parametrize('obj', obj_li)
    def test_register(self, set_up, obj):
        title = obj.title
        base_url = set_up[2].read_yaml('api', 'load')
        test_url = obj.url
        all_url = ''.join((base_url, test_url))
        right_data = HandleRe.my_re(datas=obj.data)
        result = set_up[0].send(url=all_url, data=right_data)
        try:
            assert [result.json()['code'],
                    result.json()['msg']] == [obj.expected, obj.msg]
            if obj.caseId == 1:
                my_data = eval(right_data)
                bl = set_up[1].mysql_exist(sql=set_up[2].read_yaml(
                    'mysql', 'phone_sql'),
                                           args=my_data['mobile_phone'])
                assert bl
        except Exception as e:
            self.he.write_excel(row_num=int(obj.caseId) + 1,
                                col_num=7,
                                value='fail')
            self.he.write_excel(row_num=int(obj.caseId) + 1,
                                col_num=8,
                                value=result.text)
            set_up[3].error(e)
            raise e
        else:
            self.he.write_excel(row_num=int(obj.caseId) + 1,
                                col_num=7,
                                value='success')
            self.he.write_excel(row_num=int(obj.caseId) + 1,
                                col_num=8,
                                value=result.text)
            set_up[3].info(obj.title)
示例#28
0
class CaseRegister(unittest.TestCase):
    """
    注册用例
    """
    do_log = HandleLogging().get_logger()
    do_excel = HandleExcel(TEST_DATAS_FILE_PATH2, sheetname='register')
    case_list = do_excel.get_cases()

    @classmethod
    def setUpClass(cls):
        cls.do_log.info("\n{:=^40}".format("开始执行用例"))
        cls.send_request = HandleSuds()
        cls.handle_mysql = HandleMysql()

    @classmethod
    def tearDownClass(cls):
        cls.handle_mysql.close()
        cls.do_log.info("\n{:=^40}".format("用例执行结束"))

    @data(*case_list)
    def test_register(self, one_case):
        self.do_log.info("\nRunning Testing Methon:{}".format(inspect.stack()[0][3]))
        new_data = Context.register_parameterization(one_case.data)

        res = self.send_request(url=one_case.url, api=one_case.api, data=new_data)
        if one_case.api.lower() == 'sendmcode' and res == 'ok':
            one_dict = json.loads(new_data, encoding='utf-8')
            Context.registing_tel = one_dict["mobile"]
            check_sql = one_case.check_sql
            if check_sql:
                check_sql = Context.registing_tel_replace(check_sql)
                mysql_data = self.handle_mysql(sql=check_sql)
                Context.verify_code = mysql_data["Fverify_code"]
        actual_result = str(res)
        expect_result = str(one_case.expected)
        try:
            self.assertEqual(expect_result, actual_result, msg="测试{}失败".format(one_case.title))
        except AssertionError as e:
            self.do_log.error("具体异常为:{}".format(e))
            self.do_excel.write_result(row=one_case.case_id + 1, actual=str(res), result='Fail')
            raise e
        else:
            self.do_excel.write_result(row=one_case.case_id + 1, actual=str(res), result='pass')
示例#29
0
class TestRegister:
    obj_li = HandleExcel('register')
    cases = obj_li.read_excel()

    @pytest.mark.parametrize('case', cases)
    def test_register(self, set_up, case):
        url = hy.read_yaml('request', 'base_url') + case.url
        data = HandleRe.handle_para(case.data)
        res = set_up[0].send(url=url, data=data)
        try:
            assert [case.expected, case.msg] == [res.json()['code'], res.json()['msg']]
            self.obj_li.write_excel(int(case.caseId) + 1, 8, value=str(res.json()))
        except AssertionError as e:
            my_logger.error(f'用例{case.title}断言失败')
            self.obj_li.write_excel(int(case.caseId)+1,7, value='fail')
            raise e
        else:
            my_logger.info(f'用例{case.title}断言成功')
            self.obj_li.write_excel(int(case.caseId)+1,7, value='success')
示例#30
0
class TestLogin:
    he = HandleExcel('login')
    list_obj = he.operate_excel()

    # @classmethod
    # def setUpClass(cls) -> None:
    #     cls.hr = HandleRequest()
    #     cls.hm = HandleMysql()
    #
    # @classmethod
    # def tearDownClass(cls) -> None:
    #     cls.hr.close()
    #     cls.hm.close()
    @pytest.mark.parametrize('obj', list_obj)
    def test_login(self, set_up, obj):
        url = hy.read_yaml('excel', 'base_url') + obj.url
        # if obj.caseId == 2:
        #     HandlePhone.loop_generate_phone()
        request_data = HandleRe.get_data(data=obj.data)
        result = set_up[0].send(url=url, data=request_data)
        try:
            assert [obj.expected,
                    obj.msg] == [result.json()['code'],
                                 result.json()['msg']]
            # self.assertListEqual([obj.expected, obj.msg], [result.json()['code'], result.json()['msg']],
            #                      msg=f"用例{obj.title}执行完成")
        except AssertionError as e:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='fail')
            logger.error(e)
            raise e
        else:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=7,
                                sheet_value='success')
            logger.info(f"用例{obj.title}执行通过")
        finally:
            self.he.write_excel(rowid=int(obj.caseId) + 1,
                                colid=8,
                                sheet_value=result.text)