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
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