class TestJoinVip: def setup(self): self.driver = BaseDriver().get_driver(noReset=False) self.pagelogin = PageLogin(driver=self.driver) self.pagejoinvip = PageJoinVip(driver=self.driver) self.findkeyword = FindKeyWord(driver=self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", to_para(filename="data_vip.yaml", test_key="test_vip")) def test_join_vip(self, args): keyword = args["keyword"] expect = args["expect"] # 如果没有登陆 必须要有先登录 self.pagelogin.page_login_state() # 组合方分为了两个部分 self.pagejoinvip.pagejoinvip_1() # 切换到浏览器的环境 self.driver.switch_to.context("WEBVIEW_com.yunmall.lc") # 发送验证码 self.pagejoinvip.pagejoinvip_2(value=keyword) try: # 断言"邀请码输入不正确" 是否存在,如果存在就代表没有成为VIP assert self.findkeyword.is_key_word_exit_in_page_source( key_word=expect) except Exception as ex: raise ex self.driver.switch_to.context("NATIVE_APP")
class TestLogin: @allure.step(title="setup") def setup(self): self.driver = BaseDriver().get_driver() self.page = Page(self.driver) @allure.step(title="teardown") def teardown(self): sleep(3) self.driver.quit() @pytest.mark.parametrize(("account", "password", "result", "status"), read_data()) def test_login(self, account, password, result, status): try: sleep(2) self.page.home.page_home() self.page.mine.page_click_mine() self.page.login.page_login(account, password) if status == True: username = self.page.mine.page_get_login_info() # print("{}登录成功".format(username)) self.page.mine.page_click_setting() self.page.setting.page_click_logout() assert username == account print("{}登录成功".format(username)) else: error = self.page.login.page_result(account, password) assert error == result print("登录失败提示是是:{}".format(error)) except Exception as e: print("error是:{}".format(e))
class TestAddress: def setup(self): logging.info("正在获取driver对象") self.driver = BaseDriver().get_driver() self.page = Page(self.driver) def teardown(self): logging.info("关闭浏览器") self.driver.quit() def test_address(self): self.page.home.page_click_login_link() self.page.login.page_login("*****@*****.**", "1234qwer") self.page.home.page_click_my_account() self.page.my_account.page_new_address() if self.page.my_address.page_if_address(): print("地址存在,不用新建了") logging.info("有地址") else: self.page.my_address.page_click_new_address_btn() sleep(1) self.page.edit_address.page_select_area() self.page.edit_address.page_input_address("test address") self.page.edit_address.page_save_address_btn() assert self.page.edit_address.page_save_result() == "已保存地址"
class TestLogin: def setup(self): self.driver = BaseDriver().get_driver(noReset=False) self.pagelogin = PageLogin(driver=self.driver) self.pageaddshopcart = PageAddShopCart(driver=self.driver) def teardown(self): self.driver.quit() def test_add_shop_cart(self): self.pagelogin.page_login_state() self.pageaddshopcart.pageaddshopcart()
class TestNewMsg: def setup(self): self.driver=BaseDriver().base_driver() self.page=Page(self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args",base_analyse("new_msg.yaml","test_new_msg")) def test_new_msg(self,args): self.page.page_list().page_click_new_msg() self.page.page_new().page_input_recipient(args["recipient"]) self.page.page_new().page_input_msg_text(args["text"]) sleep(2) self.page.page_new().page_send_btn()
class TestCart: def setup(self): self.driver = BaseDriver().get_driver() self.page = Page(self.driver) def teardown(self): self.driver.quit() def test_add_to_cart(self): try: self.page.home.page_click_login_link() self.page.login.page_login("*****@*****.**", "1234qwer") self.page.home.page_input_keywords("skii") self.page.home.page_click_search_btn() self.page.search_result.page_click_product() self.page.search_result.page_switch_handle() sleep(2) self.page.product_detail.page_click_add_to_cart() info = self.page.product_detail.page_get_cart_info() assert info == "商品已加入购物车", "加入购物车失败,请检查" except Exception as e: logging.error(e) def test_total_price(self): try: self.page.home.page_click_login_link() self.page.login.page_login("*****@*****.**", "1234qwer") self.page.home.page_click_cart() self.page.cart.page_if_check_all() calculate_total_price = self.page.cart.page_calculate_total_price() total_price_display = self.page.cart.page_total_price_display() print(calculate_total_price, total_price_display) assert total_price_display == calculate_total_price, "总价不一致,请检查" except Exception as e: logging.error("error出现了:{}".format(e)) def test_part_total_price(self): self.page.home.page_click_login_link() self.page.login.page_login("*****@*****.**", "1234qwer") self.page.home.page_click_cart() calculate_part_total_price = self.page.cart.page_calculate_part_total_price( ) total_price_display = self.page.cart.page_total_price_display() logging.info("比较2个总价{},{}".format(total_price_display, calculate_part_total_price)) assert total_price_display == calculate_part_total_price, "总价不一致,请检查"
class TestLogin: def setup(self): self.driver = BaseDriver().get_driver(noReset=False) self.pagelogin = PageLogin(driver=self.driver) self.pageupdateapp = PageUpdateApp(driver=self.driver) def teardown(self): self.driver.quit() def test_update_app(self): # 判断当前是否登录,因为更改设置需要登录状态才能进行修改 self.pagelogin.page_login_state() self.pageupdateapp.pageupdateapp(msg="关于百年奥莱") try: assert self.pageupdateapp.pageupdateapp_update_success() == True print("测试更新应用成功") except Exception as ex: print("测试更新应用失败", ex)
class TestLogin: def setup(self): # 再base_driver中设置一个默认的参数,在这里调整就可以选应用不在重置 self.driver = BaseDriver().get_driver(noReset=False) self.pagelogin = PageLogin(driver=self.driver) self.clearcaches = PageClearCaches(self.driver) def teardown(self): self.driver.quit() def test_clearcaches(self): self.pagelogin.page_login_state() try: self.clearcaches.pageclearcaches(msg="清理缓存") print(self.clearcaches.get_toast_text(msg="清理缓存")) assert self.clearcaches.get_toast_text(msg="清理缓存") except Exception as ex: print(ex)
class TestLogin: def setup(self): # 再base_driver中设置一个默认的参数,在这里调整就可以选应用不在重置 self.driver = BaseDriver().get_driver(noReset=False) self.pagelogin = PageLogin(driver=self.driver) def teardown(self): self.driver.quit() # @pytest.mark.parametrize("account,pwd", # [("itheima_test", "itheima"), ("itheima_test123", "itheima"), ("itheima_test", "123")]) # @pytest.mark.parametrize("account,pwd", # [("itheima_test", "itheima")]) @pytest.mark.parametrize("args", to_para(filename="data_login.yaml", test_key="test_ship_to_addr")) def test_login(self, args): # 解析yaml数据 account = args["account"] pwd = args["pwd"] toast = args["toast"] self.pagelogin.pagelogin(account=account, pwd=pwd) try: if toast is None: print("\n", self.pagelogin.page_login_sucess_info()) assert self.pagelogin.page_login_sucess_info( ) == "itheima_test", "用户名前后不一致" else: print("获取应用的提示信息:", self.pagelogin.page_login_toast_info(msg=toast)) print("data_login.yaml的toast信息:", toast) assert self.pagelogin.page_login_toast_info(msg=toast) == toast except Exception as ex: raise ex # 测试登录状态函数 def test_login_state(self): self.pagelogin.page_login_state()
class TestLogin: mydriver = None homepage = None loginpage = None def setup_class(self): self.mydriver = BaseDriver('http://localhost/') self.mydriver.set_max_window() self.mydriver.set_imp_wait(10) def teardown_class(self): time.sleep(2) self.mydriver.quit() # @pytest.mark.skip @allure.title('进入主页后跳转至登录页') @pytest.mark.run(order=1) def test_to_loginpage(self): self.homepage = HomeHandle(self.mydriver) self.homepage.go_2_loginpage() # @pytest.mark.skip @allure.title("登录") @allure.description("用例描述:测试登录的各种异常情况") @pytest.mark.parametrize( ("username", "password", "veriycode", "dialog_text"), build_data()) @pytest.mark.run(order=2) def test_login_error(self, username, password, veriycode, dialog_text): self.loginpage = LoginHandle(self.mydriver) self.loginpage.input_username(username) self.loginpage.input_password(password) self.loginpage.input_veriycode(veriycode) self.loginpage.click_login() dialog_text = self.loginpage.get_dialog_text() time.sleep(1) self.loginpage.click_dialog_yes_bg() assert dialog_text == dialog_text
class TestFileManage: def setup(self): self.driver = BaseDriver().get_driver() print("获取驱动成功") self.FileManagePage = FileManagePage(self.driver) def teardown(self): self.driver.quit() def test_file_manage(self): self.FileManagePage.create_folder() self.FileManagePage.create_file() self.FileManagePage.move_files() num = self.FileManagePage.get_moved_files_num() print(num) assert num == 20 def test_1(self): print(1) assert 1 def test_2(self): print(2) assert 0 def test_3(self): print(3) assert 0 def test_4(self): print(4) assert 1 def test_chizi(self): print("丹丹lllll") print("哈哈哈哈") assert 1
class TestLogin: def setup(self): self.driver=BaseDriver().get_driver() self.page=Page(self.driver) def teardown(self): logging.info("完成测试") self.driver.quit() @pytest.mark.parametrize(("email","password","account_name","error"),BaseData().read_data("login.txt")) def test_login(self,email,password,account_name,error): logging.info("点击登录链接") self.page.home.page_click_login_link() sleep(2) if error == None: self.page.login.page_login(email, password) display_name = self.page.home.page_get_account_name() assert display_name==account_name,"登录失败" print("{}登录成功".format(display_name)) else: try: self.page.login.page_login(email, password) except Exception: assert error==self.page.login.page_get_error_text(),"断言有问题,请检查"
class TestLogin: driver = None def setup_class(self): self.driver = BaseDriver('http://localhost/') self.driver.set_max_window() self.driver.set_imp_wait(10) def teardown_class(self): time.sleep(2) self.driver.quit() pass @allure.title("主页") @allure.description("用例描述:从主页跳转至登录页") @pytest.mark.run(order=1) def test_to_loginpage(self): homehandle = HomeHandle(self.driver) homehandle.go_2_loginpage() @allure.title("登录页") @allure.description("用例描述:成功登录") @pytest.mark.parametrize(("username", "password", "veriycode"), [("18588581997", "123456", "8888")]) @pytest.mark.run(order=2) def test_login(self, username, password, veriycode): loginhandle = LoginHandle(self.driver) loginhandle.input_username(username) loginhandle.input_password(password) loginhandle.input_veriycode(veriycode) loginhandle.click_login() @allure.title("我的订单页") @allure.description("用例描述:进入我的订单页") @pytest.mark.run(order=3) def test_to_myorderpage(self): userhandle = UserHandle(self.driver) userhandle.to_orderpage() # @pytest.mark.skip @allure.title("地址管理页") @allure.description("用例描述:地址管理页进入添加界面") @pytest.mark.run(order=4) def test_to_addresspage(self): # 切换窗口 time.sleep(5) windows = self.driver.get_window_handles() self.driver.switch_window(windows[-1]) orderhandle = OrderHandle(self.driver) self.driver.scroll(0, 200) orderhandle.to_addresspage() old_address_count = None # @pytest.mark.skip @allure.title("添加地址页") @allure.description("用例描述:进行添加地址操作,并验证结果") @pytest.mark.run(order=5) @pytest.mark.parametrize( ("receiver", "province", "city", "district", "twon", "address", "phone"), [("张先生", "北京市", "市辖区", "朝阳区", "三里屯街道", "xxx小区x单元xxx号", "15888888888")]) def test_add_address(self, receiver, province, city, district, twon, address, phone): addresshandle = AddressHandle(self.driver) self.old_address_count = addresshandle.get_address_count() addresshandle.to_add_address_frame() time.sleep(2) # 切换frame self.driver.switch_frame(NewAddresspage.page_frame_tag) creataddresshandle = CreatAddressHandle(self.driver) # 写入数据 creataddresshandle.input_receiver(receiver) creataddresshandle.input_province(province) creataddresshandle.input_city(city) creataddresshandle.input_district(district) creataddresshandle.input_twon(twon) creataddresshandle.input_address(address) creataddresshandle.input_phone(phone) creataddresshandle.click_submit() time.sleep(2) now_address_count = addresshandle.get_address_count() assert now_address_count > self.old_address_count, '最新地址条数是否大于之前,如成立则表示添加地址成功'
class TestShipToAddr: def setup(self): self.driver = BaseDriver().get_driver(noReset=False) self.pagelogin = PageLogin(driver=self.driver) self.pageshiptoaddr = PageShipToAddr(driver=self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", to_para(filename="data_ship_to_addr.yaml", test_key="test_ship_to_addr")) def test_ship_to_addr(self, args): name = args["name"] phone = args["phone"] detailed_address = args["detailed_address"] postcode = args["postcode"] toast = args["toast"] self.pagelogin.page_login_state() self.pageshiptoaddr.pageshiptoaddr(recipient=name, phone_number=phone, detailed_address=detailed_address, postcode=postcode) try: if toast != None: # print(self.pageshiptoaddr.base_get_toast(message=toast)) assert self.pageshiptoaddr.base_assert_toast_info(msg=toast), "保存失败,toast内容和预期不符" else: assert self.pageshiptoaddr.pageshiptoaddr_addr_same_as_before() == "%s %s" % ( name, phone), "保存成功,但是未在此页面找到保存的姓名和电话,可能没有将刚才输入的地址设置为默认的" except Exception as ex: raise ex # 测试编辑地址功能 def test_edit_address(self): # 先登录 self.pagelogin.page_login_state() # 进入到收货地址管理的界面 self.pageshiptoaddr.pageshiptoaddr_2() # 判断是否有收货地址,如果有就进行修改 if self.pageshiptoaddr.pageshiptoaddr_if_address_has_one_Addr(): self.pageshiptoaddr.pageshiptoaddr_edit_address_btn() self.pageshiptoaddr.pageshiptoaddr_4(recipient="哈哈哈1", phone_number="11111111111", detailed_address="2单元 10号", postcode="454100") print(self.pageshiptoaddr.base_get_toast(message="保存成功")) assert self.pageshiptoaddr.pageshiptoaddr_if_edit_address_success("保存成功"), "修改可能失败了" # 如果没有,就添加一条地址 else: self.pageshiptoaddr.pageshiptoaddr_3(recipient="天下影音", phone_number="13273911234", detailed_address="2单元 10号", postcode="454100") # 测试删除地址的功能 def test_del_address(self): # 先登录 self.pagelogin.page_login_state() # 进入到收货地址管理的界面 self.pageshiptoaddr.pageshiptoaddr_2() # 判断地址栏中是否有“默认”的标签,如果有代表有可以删的地址 if self.pageshiptoaddr.pageshiptoaddr_if_have_address_to_del(): self.pageshiptoaddr.pageshiptoaddr_edit_del_and_confirm() # 由于不知道有多少个地址需要删除,所以使用while循环 while True: if self.pageshiptoaddr.pageshiptoaddr_if_have_address_to_del(): self.pageshiptoaddr.pageshiptoaddr_edit_del_and_confirm() else: assert self.pageshiptoaddr.pageshiptoaddr_if_have_address_to_del() is False, "还有没删除完的地址" break else: assert self.pageshiptoaddr.pageshiptoaddr_if_have_address_to_del() is False, "还有没删除完的地址"