Пример #1
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="通过")
Пример #2
0
 def wait_element_clickable(self,
                            locator,
                            img_info,
                            timeout=15,
                            poll_frequency=0.5):
     """
     等待元素可点击
     :param locator: 定位表达式
     :param img_info: 错误截图文件名
     :param timeout: 等待超时时间
     :param poll_frequency: 等待轮询时间
     :return:
     """
     # 等待元素之前获取当前的时间
     start_time = time.time()
     try:
         ele = WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.element_to_be_clickable(locator))
     except Exception as e:
         # 输出日志
         log.error("元素--{}--等待可点击超时".format(locator))
         log.exception(e)
         # 对当前页面进行截图
         self.save_scree_image(img_info)
         raise e
     else:
         # 元素等待出现之后,获取实际
         end_time = time.time()
         log.info("元素--{}--可点击等待成功,等待时间{}秒".format(locator,
                                                   end_time - start_time))
         return ele
Пример #3
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="通过")
Пример #4
0
 def wait_element_visibility(self,
                             locator,
                             img_info,
                             timeout=15,
                             poll_frequency=0.5):
     """
     等待元素可见
     :param locator: 定位表达式
     :param img_info:  错误截图文件名
     :param timeout: 等待超时时间
     :param poll_frequency: 等待轮询时间
     :return:
     """
     start_time = time.time()
     try:
         ele = WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.visibility_of_element_located(locator))
     except Exception as e:
         # 输出日志
         log.error("元素--{}--等待可见超时".format(locator))
         log.exception(e)
         self.save_scree_image(img_info)
         raise e
     else:
         # 元素等待出现以后,获取实际
         end_time = time.time()
         log.info("元素--{}--等待成功,等待时间{}秒".format(locator,
                                                end_time - start_time))
         return ele
Пример #5
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='通过')
Пример #6
0
 def wait_element_visibility(self,
                             locator,
                             img_info,
                             timeout=20,
                             poll_frequency=0.5):
     '''等待元素可见'''
     # 等待元素之前获取当前时间
     start_time = time.time()
     try:
         ele_visibility = WebDriverWait(
             self.driver, timeout, poll_frequency).until(
                 EC.visibility_of_element_located(locator))
     except Exception as e:
         # 输出日志
         log.error('元素--{}--等待可见超时'.format(locator))
         log.exception(e)
         # 对当前页面进行截图
         self.save_scree_imge(img_info)
         raise e
     else:
         # 元素等待出现之后获取实际时间
         end_time = time.time()
         log.info('元素--{}--等待成功,耗时:{}秒'.format(locator,
                                               end_time - start_time))
         return ele_visibility
Пример #7
0
    def test_update(self, cas):

        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        cas['data'] = replace_data(cas['data'])
        data = eval(cas['data'])
        headers = eval(conf.get('env', 'headers'))
        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()

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            #判断数据库中是否更新昵称
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                s = self.bb.find_one(sql)['reg_name']
                self.assertEqual(data['reg_name'], s)

        except AssertionError as e:
            log.error('该用例{}报错'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('该用例{}通过'.format(cas['title']))
            self.exce.write(row=row, column=8, value='通过')
Пример #8
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="通过")
Пример #9
0
    def test_register(self, cas):
        url = cas['url']
        method = cas['method']

        if '#phone#' in cas['data']:
            phon = self.phone_replace()
            setattr(EnvData, 'mobile_phone', phon)
            cas['data'] = replace_data(cas['data'])

        data = eval(cas['data'])
        headers = eval(conf.get('env', 'headers'))
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

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

        try:
            self.assertEqual(expected['code'], res['code'])
            self.assertEqual(expected['msg'], res['msg'])
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                f = self.my.find_count(sql)
                self.assertEqual(1, f)
        except AssertionError as e:
            log.error('这条用例{}报错'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('这条用例{}通过了'.format(cas['title']))
            self.exce.write(row=row, column=8, value='通过')
Пример #10
0
 def test_update(self, case):
     # 第一步:准备用例数据
     url = conf.get("env", "url") + case["url"]
     method = case["method"]
     data = eval(replace_data(case["data"]))
     # 替换参数中的用户id
     headers = eval(conf.get("env", "headers"))
     headers["Authorization"] = getattr(EnvData, "token_value")
     # 在请求头中加入setupclass中提取出来的token
     expected = eval(case["expected"])
     row = case["case_id"] + 1
     # 第二步:发送请求,获取结果
     print("请求参数为:", data, type(data))
     response = request(url=url, method=method, json=data, headers=headers)
     res = response.json()
     # 第三步:断言(比对预期结果和实际结果)
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
     except AssertionError as e:
         print("预期结果:", expected)
         print("实际结果:", res)
         self.excel.write_data(row=row, column=8, value="未通过")
         log.error("用例:{},执行未通过".format(case["title"]))
         log.exception(e)
         raise e
     else:
         self.excel.write_data(row=row, column=8, value="通过")
         log.info("用例:{},执行通过".format(case["title"]))
Пример #11
0
 def test_loans(self, case):
     # 第一步:准备用例数据
     url = conf.get("env", "url") + case["url"]
     method = case["method"]
     data = eval(replace_data(case["data"]))
     # 替换参数中的用户id
     headers = eval(conf.get("env", "headers"))
     expected = eval(case["expected"])
     row = case["case_id"] + 1
     # 第二步:发送请求,获取结果
     response = request(url=url, method=method, params=data, headers=headers)
     res = response.json()
     print(response.url)
     # 第三步:断言(比对预期结果和实际结果)
     try:
         self.assertEqual(expected["code"], res["code"])
         self.assertEqual(expected["msg"], res["msg"])
         # 断言返回的数据的条数
         self.assertEqual(expected["len"],len(res["data"]))
     except AssertionError as e:
         # print("预期结果:", expected)
         # print("实际结果:", res)
         self.excel.write_data(row=row, column=8, value="未通过")
         log.error("用例:{},执行未通过".format(case["title"]))
         log.exception(e)
         raise e
     else:
         self.excel.write_data(row=row, column=8, value="通过")
         log.info("用例:{},执行通过".format(case["title"]))
Пример #12
0
    def test_audit(self, cas):

        url = conf.get('env', 'url') + cas['url']
        method = cas['method']
        data = eval(replace_data(cas['data']))
        headers = eval(conf.get('env', 'headers'))
        headers['Authorization'] = getattr(EnvData, 'admin_token')
        expected = eval(cas['expected'])
        row = cas['case_id'] + 1

        respones1 = request(url=url, method=method, json=data, headers=headers)
        res1 = respones1.json()

        if cas['title'] == '审核通过' and res1['msg'] == 'OK':
            setattr(EnvData, 'pass_loan_id', str(data['loan_id']))
        print('预期结果:', expected)
        print('实际结果:', res1)

        try:
            self.assertEqual(expected['code'], res1['code'])
            self.assertEqual(expected['msg'], res1['msg'])
            #判断审核状态是否符合预期的结果
            if cas['check_sql']:
                sql = replace_data(cas['check_sql'])
                status = self.bb.find_one(sql)['status']
                self.assertEqual(expected['status'], status)
        except AssertionError as e:
            log.error('这条用例{}没有通过'.format(cas['title']))
            log.exception(e)
            self.exce.write(row=row, column=8, value='不通过')
            raise e
        else:
            log.info('这条用例{}执行通过'.format(cas['title']))
            self.exce.write(row=row, column=8, value='通过')
Пример #13
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='通过')
Пример #14
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='通过')
Пример #15
0
 def wait_element_presence(self,
                           locator,
                           img_info,
                           timeout=15,
                           poll_frequency=0.5):
     """
     等待元素被加载
     :param locator: 定位表达式
     :param img_info: 错误截图信息
     :param timeout: 超时时间
     :param poll_frequency: 轮询时间
     :return:
     """
     # 等待元素之前获取当前的时间
     start_time = time.time()
     try:
         ele = WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.presence_of_element_located(locator))
     except Exception as e:
         # 输出日志
         log.error("元素--{}--等待被加载超时".format(locator))
         log.exception(e)
         # 对当前页面进行截图
         self.save_scree_image(img_info)
         raise e
     else:
         # 元素等待出现之后,获取实际
         end_time = time.time()
         log.info("元素--{}--加载等待成功,等待时间{}秒".format(locator,
                                                  end_time - start_time))
         return ele
Пример #16
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)
Пример #17
0
    def test_recharge(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(replace_data(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"].format(self.member_id)
            sql = replace_data(case["check_sql"])
            start_money = self.db.find_one(sql)["leave_amount"]
            print("充值之前的金额:", start_money)

        # 第二步, 发送请求,获取实际结果
        response = 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)
            sql = replace_data(case["check_sql"])

            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"]:
                recharge_money = decimal.Decimal(str(data["amount"]))
                self.assertEqual(recharge_money, end_money - start_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.error("用例--{}--执行通过".format(case["title"]))

            self.excel.write_data(row=row, column=8, value="通过")
Пример #18
0
 def click_ele(self, locator, img_info):
     try:
         ele = self.driver.find_element(*locator).click()
     except Exception as e:
         log.error(F"点击元素--{locator}--失败")
         log.exception(e)
         # 进行截图
         self.save_error_image(img_info)
     else:
         log.info(F"元素--{locator}--点击成功")
    def test_recharge(self, case):
        # 第一步:准备测试数据
        # 请求方法
        method = case["method"]
        # 请求url
        url = conf.get("env", "BASE_URL") + case["url"]
        # 请求数据
        case["data"] = case["data"].replace("#member_id#", self.member_id)
        data = eval(case["data"])
        # 请求头
        headers = eval(conf.get("env", "headers"))
        headers["Authorization"] = self.token
        print(headers)
        # 期望结果
        expected = eval(case["expected"])
        # 用例回写行数
        row = case["case_id"] + 1
        # 数据库前置查询
        if case["check_sql"]:
            sql = case["check_sql"].format(self.member_id)
            print(sql)
            start_money = self.db.find_one(sql)["leave_amount"]
            print("充值前的金额为:", start_money)

        # 第二步:接口调用
        response = request(method=method, url=url, json=data, headers=headers)
        # 调用接口
        res = response.json()
        print("预期结果:{}".format(expected))
        print("实际结果:{}".format(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"], jsonpath(res, "$..code")[0])
            self.assertEqual(expected["msg"], jsonpath(res, "$..msg")[0])
            # 数据库断言
            if case["check_sql"]:
                # 将充值金额转换为decimal类型(数据库中的金额为decimal类型)
                recharge_money = decimal.Decimal(str(data["amount"]))
                self.assertEqual(recharge_money, end_money - start_money)
        except AssertionError as e:
            # 结果回写到excel中
            log.debug("----用例{}执行完成-------".format(case["title"]))
            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="通过")
Пример #20
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)
Пример #21
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="通过")
Пример #22
0
 def get_ele(self, locator, img_info):
     try:
         ele = self.driver.find_element(*locator)
     except Exception as e:
         log.error(F"获取元素--{locator}--失败")
         log.exception(e)
         # 进行截图
         self.save_error_image(img_info)
     else:
         log.info(F"元素--{locator}--获取成功")
         return ele
Пример #23
0
    def test_register(self, case):
        # 第一步,准备用例数据  (请求方法,请求地址,请求参数,请求头
        # 请求方法
        method = case["method"]
        # 请求url
        url = case["url"]
        # 请求参数是否有手机号需要替换
        # 判断
        if "#phone#" in case["data"]:
            phone = self.random_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

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

        print("预期结果:", expected)
        print("实际结果:", res)

        # 第三步,断言
        try:

            self.assertEqual(expected["code"], res["code"])
            self.assertEqual(expected["msg"], res["msg"])
            # 判断是否需要进行sql校验
            if case["check_sql"]:
                sql = case["check_sql"].replace("#phong#",
                                                data["mobile_phone"])

                res = self.db.find_count(sql)
                self.assertTrue(1, res)

        except AssertionError as e:
            # ---------------------将结果回写excel  中
            log.error("用例---- {}----执行未通过".format(case["title"]))
            log.info("预期结果:", expected)
            log.info("实际结果:", res)
            log.exception(e)
            # log.error(e)
            log.exception(e)  # 这样可以异常情况打印到日志文件中!
            self.excel.write_data(row=row, column=8, value="未通过")
            raise e
        else:
            # ----------------------将结果回写excel  中
            log.error("用例---- {}----执行通过".format(case["title"]))

            self.excel.write_data(row=row, column=8, value="通过")
Пример #24
0
 def get_element_text(self, locator, img_info):
     try:
         text = self.driver.find_element(*locator).text
     except Exception as e:
         # 日志输出
         log.error("元素--{}--获取文本失败".format(locator))
         log.exception(e)
         self.save_scree_image(img_info)
         raise e
     else:
         log.info("元素--{}--获取文本失败".format(locator))
         return text
    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="通过")
Пример #26
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="通过")
Пример #27
0
 def click_ele(self, locator, img_info):
     # 点击元素
     try:
         self.driver.find_element(*locator).click()
     except Exception as e:
         # 输出日志
         log.error("元素--{}--点击元素失败".format(locator))
         log.exception(e)
         # 对当前页面进行截图
         self.save_error_image(img_info)
         raise e
     else:
         log.info("元素--{}--点击成功".format(locator))
Пример #28
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="通过")
Пример #29
0
 def get_ele(self, locator, img_info):
     # 获取到元素节点
     try:
         ele = self.driver.find_element(*locator)
     except Exception as e:
         # 输出日志
         log.error("获取元素--{}--失败".format(locator))
         log.exception(e)
         # 对当前页面进行截图   imginfo 错误截图信息由调用处传入
         self.save_error_image(img_info)
         raise e
     else:
         log.info("元素--{}--获取成功".format(locator))
         return ele
Пример #30
0
 def get_ele_text(self, locator, img_info):
     # 获取元素包含text信息 需要传入loactor 还要进行拆包
     try:
         text = self.driver.find_element(*locator).text
     except Exception as e:
         # 输出日志
         log.error("元素--{}--获取文本失败".format(locator))
         log.exception(e)
         # 对当前页面进行截图
         self.save_error_image(img_info)
         raise e
     else:
         log.info("元素--{}--获取文本成功".format(locator))
         return text