Esempio n. 1
0
class TestLLogin(object):
    def setup_class(self):
        """初始化对象"""
        self.driver = get_phone_driver(
            'com.yunmall.lc', 'com.yunmall.ymctoc.ui.activity.MainActivity')
        self.page_obj = Page(self.driver)

    def teardown_class(self):
        self.driver.quit()

    @pytest.fixture(autouse=True)
    def into_login_page(self):
        """点击首页'我',跳转至注册页面"""
        self.page_obj.get_index_page().go_to_sign_page()
        """点击"已账号",跳转至登录页面"""
        self.page_obj.get_sign_page().go_to_login_page()

    @pytest.mark.parametrize("login_num,name,password,exp",
                             get_login_data().get("success"))
    def test_success_login(self, login_num, name, password, exp):
        """打印测试数据顺序"""
        print("这是用例测试:", login_num)
        """点击首页'我',跳转至注册页面"""
        self.page_obj.get_index_page().go_to_sign_page()
        """点击"已账号",跳转至登录页面"""
        self.page_obj.get_sign_page().go_to_login_page()
        """输入信息,点击登录,跳转至个人页面"""
        self.page_obj.get_login_page().login(name, password)
        """进行断言,点击设置,跳转至设置页面"""
        try:
            """断言成功"""
            res = self.page_obj.get_person_page().get_login_success_result()
            try:
                assert res in exp
            except AssertionError:
                """在个人中心,但没有'exp'"""
                """截图"""
                self.page_obj.get_person_page().screen_shot()
                assert False
            finally:
                """点击设置"""
                self.page_obj.get_person_page().go_to_setting_page()
                """执行退出操作`"""
                self.page_obj.get_setting_page().scroll_screen_in_setting(1)
                self.page_obj.get_setting_page().click_login_out_btn(1)
        except TimeoutException:
            """断言失败"""
            """还停留在登录页面"""
            self.page_obj.get_person_page().screen_shot()  # 截图
            """需要执行退出登录页面,以便于进行下面的测试"""
            self.page_obj.get_login_page().close_login_page()

    @pytest.mark.parametrize("login_num,name,password,toast,exp",
                             get_login_data().get("fail"))
    def test_fail_login(self, login_num, name, password, toast, exp):
        print("这是测试用例", login_num)
        """输入信息,点击登录,跳转至个人页面"""
        self.page_obj.get_login_page().login(name, password)
        """进行断言"""

        try:
            """能获取toast信息"""
            message = self.page_obj.get_login_page().get_toast(toast)
            try:
                assert message == exp
            except AssertionError:
                """截图"""
                self.page_obj.get_login_page().screen_shot()
                assert False
            finally:
                try:
                    """判断登录按钮在不在"""
                    assert self.page_obj.get_login_page().if_login_btn()
                    """在,就关闭登录页面"""
                    self.page_obj.get_login_page().close_login_page()
                except AssertionError:
                    """不在,就可能在个人页面"""
                    """截图"""
                    self.page_obj.get_login_page().screen_shot()
                    """点击设置"""
                    self.page_obj.get_person_page().go_to_setting_page()
                    """执行退出操作`"""
                    self.page_obj.get_setting_page().click_login_out_btn(1)
                    assert False
        except TimeoutException:
            """不能获取到toast消息"""
            try:
                """对登录按钮进行判断"""
                self.page_obj.get_login_page().if_login_btn()  # 登录按钮在,表示在登录页面
                self.page_obj.get_login_page().close_login_page()  # 关闭登录页面
            except TimeoutException:
                self.page_obj.get_person_page().go_to_setting_page()  # 点击设置
                self.page_obj.get_setting_page().click_login_out_btn(
                )  # 执行退出操作
                assert False
Esempio n. 2
0
class TestLogin:
    def setup_class(self):
        # 实例化统一入口类
        self.page_obj = Page(
            get_android_driver("com.yunmall.lc",
                               "com.yunmall.ymctoc.ui.activity.MainActivity"))

    def teardown_class(self):
        # 退出driver
        self.page_obj.driver.quit()

    @pytest.fixture(autouse=True)
    def goto_login(self):
        """进入登录页面"""
        # 点击我
        self.page_obj.get_home_page().click_my_btn()
        # 点击已有账号去登录
        self.page_obj.get_chocie_login_page().click_exits_account_btn()

    @pytest.mark.parametrize("case_num, username, passwd, expect_data",
                             get_login_data().get("suc"))
    def test_login_suc(self, case_num, username, passwd, expect_data):
        """
        预期成功测试用例
        :param case_num: 用例编号
        :param username: 用户名
        :param passwd: 密码
        :param expect_data: 预期结果
        :return:
        """
        # 登录
        self.page_obj.get_login_page().login(username, passwd)
        try:
            # 获取收藏
            cart_text = self.page_obj.get_person_page().get_shop_cart_text()
            try:
                # 断言
                assert cart_text == expect_data
            except AssertionError:  # 断言失败异常
                """个人中心"""
                # 截图
                self.page_obj.get_person_page().screen_shot()
                assert False
            finally:
                # 点击设置
                self.page_obj.get_person_page().click_setting_btn()
                # 退出操作
                self.page_obj.get_setting_page().logout()

        except TimeoutException:
            """停留在登录页面"""
            # 截图
            self.page_obj.get_setting_page().screen_shot()
            # 关闭页面
            self.page_obj.get_login_page().close_login_page()
            assert False

    @pytest.mark.parametrize("case_num, username, passwd,toast,expect_data",
                             get_login_data().get("fail"))
    def test_login_fail(self, case_num, username, passwd, toast, expect_data):
        """
        预期失败测试用例
        :param case_num: 用例编号
        :param username: 用户名
        :param passwd: 密码
        :param toast: xpath拼接语句
        :param expect_data: 预期结果
        :return:
        """
        # 登录操作
        self.page_obj.get_login_page().login(username, passwd)
        try:
            """找到toast"""
            # 获取toast 消息
            message = self.page_obj.get_login_page().get_toast(toast)
            try:
                # 断言
                assert message == expect_data
            except AssertionError:
                # 截图
                self.page_obj.get_login_page().screen_shot()
                assert False
        except TimeoutException:
            """没找到toast 消息"""
            # 截图
            self.page_obj.get_login_page().screen_shot()
            assert False
        finally:
            try:
                """登录按钮存在"""
                # 判断登录按钮
                self.page_obj.get_login_page().if_login_btn()
                # 关闭登录页面
                self.page_obj.get_login_page().close_login_page()
            except TimeoutException:
                """登录按钮不存在"""
                # 点击设置
                self.page_obj.get_person_page().click_setting_btn()
                # 退出操作
                self.page_obj.get_setting_page().logout()
                # 找不到登录按钮 全失败
                assert False