Exemple #1
0
    def get_element(self,
                    locator,
                    page_action,
                    timeout=20,
                    poll_frequency=0.5,
                    wait=None):
        # 先等待元素可见或者存在
        if wait:
            self.wait_page_contains_element(locator, page_action, timeout,
                                            poll_frequency)
        else:
            self.wait_ele_visible(locator, page_action, timeout,
                                  poll_frequency)

        logger.info("在 {} 行为,查找元素:{}".format(page_action, locator))
        try:
            ele = self.driver.find_element(*locator)
        except:
            # 输出到日志
            logger.exception("查找元素失败!")
            # 失败截取当前页面
            self.get_page_img(page_action)
            raise
        else:
            return ele
Exemple #2
0
 def get_text(self,
              locator,
              page_action,
              timeout=20,
              poll_frequency=0.5,
              wait_exist=False):
     """
     :param locator:
     :param page_action:
     :param timeout:
     :param poll_frequency:
     :return:
     """
     # 等待元素存在 - 查找
     ele = self.get_element(locator,
                            page_action,
                            timeout,
                            poll_frequency,
                            wait_exist=wait_exist)
     logger.info("在 {} 行为,获取元素 {} 的文本值。".format(page_action, locator))
     try:
         txt = ele.text
     except:
         logger.exception("获取元素文本失败!")
         self.get_page_img(page_action)
         raise
     else:
         logger.info("文本值为:{}".format(txt))
         return txt
Exemple #3
0
 def wait_page_contains_element(self,
                                locator,
                                page_action,
                                timeout=20,
                                poll_frequency=0.5):
     """
     :param locator:
     :param page_action:
     :param timeout:
     :param poll_frequency:
     :return:
     """
     logger.info("在 {} 行为,等待元素:{} 存在。".format(page_action, locator))
     try:
         start = time.time()
         WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.presence_of_element_located(locator))
     except:
         # 输出到日志
         logger.exception("等待元素存在失败!")
         # 失败截取当前页面
         self.get_page_img(page_action)
         raise
     else:
         end = time.time()
         logger.info("等待耗时为:{}".format(end - start))
Exemple #4
0
    def test_register_ok(self, case):
        # print("本条测试数据:",case)
        logger.info("*********   执行用例{}:{}   *********".format(
            case["id"], case["title"]))

        # 替换 - 动态 -
        # 请求数据 #phone# 替换 new_phone
        # check_sql里的  #phone# 替换 new_phone
        if case["request_data"].find("#phone#") != -1:
            new_phone = get_new_phone()
            case = replace_mark_with_data(case, "#phone#", new_phone)

        # 步骤 测试数据 - 发起请求
        response = send_requests(case["method"], case["url"],
                                 case["request_data"])

        # 期望结果,从字符串转换成字典对象。
        expected = eval(case["expected"])

        # 断言 - code == 0 msg == ok
        logger.info("用例的期望结果为:{}".format(case["expected"]))
        try:
            self.assertEqual(response.json()["code"], expected["code"])
            self.assertEqual(response.json()["msg"], expected["msg"])
            # 如果check_sql有值,说明要做数据库校验。
            if case["check_sql"]:
                # logger.info()
                result = db.select_one_data(case["check_sql"])
                self.assertIsNotNone(result)
        except AssertionError:
            logger.exception("断言失败!")
            raise
Exemple #5
0
 def test_register_ok(self, case):
     logger.info("*********   执行用例{}:{}   *********".format(
         case["id"], case["title"]))
     expected = eval(case["expected"])
     # 步骤 测试数据 - 发起请求
     response = send_requests(case["method"], case["url"],
                              case["request_data"])
     # 断言 - code == 0 msg == ok
     logger.info("用例的期望结果为:{}".format(case["expected"]))
     try:
         self.assertEqual(response.json()["code"], expected["code"])
         self.assertEqual(response.json()["msg"], expected["msg"])
     except AssertionError:
         logger.exception("断言失败!")
Exemple #6
0
 def click_element(self,
                   locator,
                   page_action,
                   timeout=20,
                   poll_frequency=0.5):
     # 等待 - 查找
     ele = self.get_element(locator, page_action, timeout, poll_frequency)
     # 点击
     logger.info("在 {} 行为,点击元素:{}".format(page_action, locator))
     try:
         ele.click()
     except:
         logger.exception("点击元素失败!")
         self.get_page_img(page_action)
         raise
Exemple #7
0
 def input_text(self,
                locator,
                page_action,
                value,
                timeout=20,
                poll_frequency=0.5):
     # 等待 - 查找
     ele = self.get_element(locator, page_action, timeout, poll_frequency)
     logger.info("在 {} 行为,给元素:{} 输入文本值:{}".format(page_action, locator,
                                                  value))
     try:
         ele.clear()
         ele.send_keys(value)
     except:
         logger.exception("元素输入文本失败!")
         self.get_page_img(page_action)
         raise
Exemple #8
0
class TestRecharge(unittest.TestCase):

    @classmethod
    def setUpClass(cls) -> None:
        # 得到登陆的用户名和密码
        clear_EnvData_attrs()
        user, passwd = get_old_phone()
        # 登陆接口调用。
        resp = send_requests("POST", "member/login", {"mobile_phone": user, "pwd": passwd})
        # cls.member_id = jsonpath(resp.json(),"$..id")[0]
        # cls.token = jsonpath(resp.json(),"$..token")[0]
        # setattr(EnvData, "member_id", jsonpath(resp.json(), "$..id")[0])
        setattr(EnvData, "member_id", str(jsonpath(resp.json(), "$..id")[0]))
        setattr(EnvData, "token", jsonpath(resp.json(), "$..token")[0])
    def tearDown(self) -> None:
        if hasattr(EnvData,"money"):
            delattr(EnvData,"money")

    @data(*cases)
    def test_recharge(self, case):
        # 替换的数据
        if case["request_data"].find("#member_id#") != -1:
            case = replace_case_by_regular(case)

        # 数据库 - 查询当前用户的余额 - 在提现之前
        if case["check_sql"]:
            user_money_before_recharge = db.select_one_data(case["check_sql"])["leave_amount"]
            logger.info("提现前的用户余额:{}".format(user_money_before_recharge))
            # 期望的用户余额。 提现之前的余额 - 提现的钱
            recharge_money = json.loads(case["request_data"])["amount"]
            logger.info("提现的金额为:{}".format(recharge_money))
            expected_user_leave_amount = round(float(user_money_before_recharge) - recharge_money, 2)
            logger.info("提现后的金额为:{}".format(expected_user_leave_amount))
            # 更新期望的结果 - 将期望的用户余额更新到期望结果当中。
            # case = replace_mark_with_data(case, "#money#", str(expected_user_leave_amount))
            setattr(EnvData,"money",str(expected_user_leave_amount))
            case =replace_case_by_regular(case)
        # 发起请求 - 给用户提现
        response = send_requests(case["method"], case["url"], case["request_data"], token=EnvData.token)

        # 将期望的结果转成字典对象,再去比对
        expected = json.loads(case["expected"])

        # 断言
        try:
            self.assertEqual(response.json()["code"], expected["code"])
            self.assertEqual(response.json()["msg"], expected["msg"])
            if case["check_sql"]:
                self.assertEqual(response.json()["data"]["id"], expected["data"]["id"])
                self.assertEqual(response.json()["data"]["leave_amount"], expected["data"]["leave_amount"])
                # 数据库 - 查询当前用户的余额
                user_money_after_recharge = db.select_one_data(case["check_sql"])["leave_amount"]
                logger.info("提现之后的用户余额:{}".format(expected_user_leave_amount))
                self.assertEqual("{:.2f}".format(expected["data"]["leave_amount"]),
                                 "{:.2f}".format(float(user_money_after_recharge)))
        except:
            logger.exception("断言失败!")
            raise
Exemple #9
0
 def test_register_ok(self, case):
     # print("本条测试数据:",case)
     logger.info("*********   执行用例{}:{}   *********".format(
         case["id"], case["title"]))
     expected = eval(case["expected"])
     # 步骤 测试数据 - 发起请求
     response = send_requests(case["method"], case["url"],
                              case["request_data"])
     # 断言 - code == 0 msg == ok
     logger.info("用例的期望结果为:{}".format(case["expected"]))
     try:
         # self.assertEqual(response.json()["code"],expected["code"])
         # self.assertEqual(response.json()["msg"], expected["msg"])
         # 如果check_sql有值,说明要做数据库校验。
         if case["check_sql"]:
             # logger.info()
             result = db.select_one_data(case["check_sql"])
             self.assertIsNotNone(result)
     except AssertionError:
         logger.exception("断言失败!")
         raise
Exemple #10
0
 def get_attribute(self,
                   locator,
                   page_action,
                   attr,
                   timeout=20,
                   poll_frequency=0.5,
                   wait_exist=False):
     # 等待元素存在 - 查找
     ele = self.get_element(locator,
                            page_action,
                            timeout,
                            poll_frequency,
                            wait_exist=wait_exist)
     logger.info("在 {} 行为,获取元素 {} 的 {} 属性值。".format(page_action, locator,
                                                    attr))
     try:
         value = ele.get_attribute(attr)
     except:
         logger.exception("获取元素文本失败!")
         self.get_page_img(page_action)
         raise
     else:
         logger.info("属性值为:{}".format(value))
         return value