def setup_class(self): # 不加return,获取driver # self.driver = get_driver() # self.aike = PageLogin(self.driver) # 加return: self.aike = PageLogin(getdriver())
def setup_class(self): # 实例化 登录页面类 self.login = PageLogin(get_driver()) # 点击我 self.login.page_click_me() # 点击已有账户 self.login.page_click_info()
def setup_class(self): # 实例化地址管理页面 self.address = PageAddress(get_driver()) # 登录成功 # 实例化登录页面 self.login = PageLogin(get_driver()) self.login.page_login('13331172859','123456') # 点击设置 self.login.page_click_setting() # 点击地址管理 self.address.page_click_address_manage()
class TestLogin(): def setup_class(self): # 实例化PageLogin self.login = PageLogin(get_driver()) def teardown_class(self): # 退出driver驱动 self.login.driver.quit() def test_login(self): # 登录操作 self.login.page_login("13331172859", "123456") try: # 断言登录是否成功 assert "lj0918" in self.login.page_get_nickname() print('登录成功') # 退出操作 self.login.page_login_logout() except: # 失败 截图 self.login.base_getimage() with open('./Image/failed.png', 'rb') as f: allure.attach('登录失败描述:', f.read(), allure.attach_type.PNG) # 抛出异常 raise
class TestLogin(): def setup_class(self): # 实例化 登录页面类 self.login = PageLogin(get_driver()) def teardown_class(self): # 退出driver驱动 self.login.driver.quit() def test_login(self): # 登录操作 self.login.page_login("18610453007", "123456") try: assert "itheima" in self.login.page_get_nickname() allure.attach('断言成功描述') # 退出操作 self.login.page_login_logout() except: # 截图 self.login.base_getImage() with open("./Image/faild.png", "rb") as f: allure.attach("失败描述:", f.read(), allure.attach_type.PNG) # 抛异常 raise
class TestLogin(): def get_data(self): datas = ReadYaml("login.yaml").read_yaml() print(datas) arrs = [] for data in datas.values(): print(data) arrs.append((data.get("username"), data.get("password"), data.get("expext"), data.get("toast_except"))) return arrs def setup_class(self): self.login= PageLogin(get_driver()) def teardown_class(self): self.login.driver.quit() @pytest.mark.parametrize("username","password","expext","toast_expext",get_data()) def test_login(self,username,password,expext,toast_expext): if expext: try: self.login.page_input_user(username) self.login.page_input_pwd(password) self.login.page_click_login_btn() assert expext in self.login.page_get_nickname() # 点击退出 self.login.
class TestLogin: driver = None # # 初始化方法 def setup_class(self): self.driver = GetDriver().get_driver() self.login = PageLogin(self.driver) # 关闭浏览器 # def teardown_class(self): # GetDriver().quit_driver() # 登录 @pytest.mark.parametrize('args', data_with_key("test_login")) @allure.testcase("账号密码登录用例") def test_login(self, args): username = args["username"] password = args["password"] code = args["code"] expect = args["expect"] self.login.page_login(username, password, code) nickname = self.login.page_get_nickname()
class TestLogin(): def setup_class(self): self.login = PageLogin(get_driver()) def teardown_class(self): self.login.driver.quit() def test_login(self, usename="12334556633", pwd="123123"): self.login.page_input_uername(usename) self.login.page_input_pwd(pwd) self.login.page_login_btn()
class TestLogin: def setup_class(self): self.login = PageLogin(get_driver()) def teardown_class(self): self.login.driver.quit() def test_login(self, username="******", pwd="123456"): self.login.page_username(username) self.login.page_pwd(pwd) self.login.page_click_btn()
class TestLogin(): #实例化 def setup_class(self): self.login = PageLogin(get_driver()) def teardown_class(self): self.login.driver.quit() def test_login(self, username="******", pwd="2131"): self.login.page_input_username(username) self.login.page_input_pwd(pwd) self.login.page_click_login_btn()
class TestLogin(): def setup_class(self): self.driver = get_driver("com.vcooline.aike", ".umanager.LoginActivity") self.login = PageLogin(self.driver) def teardown_class(self): self.driver.quit() # def test_login(self): # self.login.page_click_btn() # print("获取的toast信息为:",self.login.base_get_toast("输入手机")) # # 断言 # try: # assert "输入手机号" in self.login.base_get_toast("输入手机") # except: # print("出错啦!") # raise # 立即体验 @allure.step("开始测试体验") def test_ty(self): # 点击体验 allure.attach("描述", "点击体验按钮") self.login.page_click_ty_btn() # 点击立即体验 allure.attach("描述", "点击立即体验按钮") self.login.page_click_ljty_btn() print("获取的toast值为:", self.login.base_get_toast("输入手机")) try: # 断言 assert "请1输入" in self.login.base_get_toast("请输入手机") allure.attach("描述", "获取toast成功!") except: allure.attach("描述", "获取toast失败!") print("出错啦!") # 截图 self.login.base_get_screen_image() with open("./Image/faild.png", "rb") as f: allure.attach("描述:失败原因", f.read(), allure.attach_type.PNG) raise
class TestLogin(): # setup def setup_class(self): # 实例化 pagelogin self.login = PageLogin(get_driver()) # teardown def teardown_class(self): # 关闭driver self.login.driver.quit() # 测试方法 test_login @allure.step("开始登陆操作") def test_login(self, username="******", password="******"): # 输入用户名 self.login.page_input_username(username) # 输入密码 self.login.page_input_password(password) # 点击登录 self.login.page_click_login_btn() # 断言 try: result = self.login.page_get_toast("密码错误") print("获取出来的toast消息为:", result) assert "密码错误" in result # 提示断言成功 print("断言成功!") except: # 截图 self.login.base_get_screen() with open("./Image/faild.png", "rb") as f: # 注意写入图片的方法,还是使用 attach 参数:描述,图片流,图个片格式 allure.attach("描述", f.read(), allure.attach_type.PNG) # 抛异常 raise
class Testlogin(): # 初始化方法 def setup_class(self): self.login = PageLogin(get_driver()) # 结束方法 def teardown_class(self): self.login.driver.quit() # 测试方法 def test_login(self, username="******", password="******"): # 输入用户名 self.login.page_input_username(username) # 输入密码 self.login.page_input_password(password) # 确认 self.login.page_click_login()
class TestLogin(): # 初始化方法 def setup_class(self): # 不加return,获取driver # self.driver = get_driver() # self.aike = PageLogin(self.driver) # 加return: self.aike = PageLogin(getdriver()) # 结束方法 def teardown_class(self): self.aike.driver.quit() # 测试方法 def test_login01(self, username=18672090992, pwd=123456): self.aike.page_input_username(username) self.aike.page_input_password(pwd) self.aike.page_click_login_btn()
class TestLogin(): # 初始化方法 def setup_class(self): # 实例化 PageLogin self.login = PageLogin(get_driver()) # 结束方法 def teardown_class(self): # 关闭驱动对象 self.login.driver.quit() # 测试方法 def test_login(self, username="******", pwd="123456"): # 输入用户名 self.login.page_input_username(username) # 输入密码 self.login.page_input_password(pwd) # 点击登录 self.login.page_click_login_btn()
class TestLogin(): # 初始化方法 def setup_class(self): # 实例化 PageLogin self.login=PageLogin(get_driver()) # 结束方法 def teardown_class(self): # 关闭驱动对象 self.login.driver.quit() # 测试方法 @pytest.mark.parametrize("username,password,expect_toast",get_data()) def test_login(self,username,password,expect_toast): # 输入用户名 self.login.page_input_username(username) # 输入密码 self.login.page_input_password(password) print("预期结果为:",expect_toast) # 点击登录 allure.attach("描述:","点击登录按钮") self.login.page_click_login_btn()
class TestLogin(): # 初始化方法 # 把开始运行的前置代码中的driver 实例化 搞一个变量 get_driver中的返回值也就是dreiver给page_login的类,self.login(login就是个变量)就是driver, def setup_class(self): self.login = PageLogin(get_driver()) # 结束方法 def teardown_class(self): self.login.driver.quit() # 测试方法 # 函数的参数中,把page_login中输入框的文本写到这边,运用page的方法 def test_login(self, username="******", pwd="136474"): self.login.page_input_username(username) self.login.page_input_password(pwd) self.login.page_click_login_btn() # 这是右键运行的方法,不用导包os # if __name__ == '__main__': # pytest.mark("-s test_login.py")
class TestLogin(): # 初始化方法 @pytest.allure.severity(pytest.allure.severity_level.NORMAL) @allure.step("执行开始操作!") def setup_class(self): allure.attach("描述","登录成功!") #实例化PageLogin self.login=PageLogin(get_driver()) #结束方法 @allure.step("执行推出操作!") def teardown_class(self): allure.attach("描述", "退出成功!") self.login.driver.quit() #测试方法 def test_login(self,text="WLAN"): #点击搜索 self.login.page_click() #输入内容 self.login.page_username(text) #点击返回 self.login.page_password() assert 1
def setup_class(self): allure.attach("描述","登录成功!") #实例化PageLogin self.login=PageLogin(get_driver())
def setup_class(self): # 实例化 PageLogin self.login = PageLogin(get_driver())
class TestLogin(): def setup_class(self): # 实例化 登录页面类 self.login = PageLogin(get_driver()) # 点击我的 self.login.page_click_me() # 点击已有账号登录 self.login.page_click_info() def teardown_class(self): # 退出driver驱动 self.login.driver.quit() # 参数化 @pytest.mark.parametrize("username,password,expect,toast_expect", get_data()) def test_login(self, username, password, expect, toast_expect): if expect: try: # 登录操作 # self.login.page_login(username,password) self.login.page_input_user(username) self.login.page_input_pwd(password) self.login.page_click_login_btn() assert expect in self.login.page_get_nickname() allure.attach("登录状态:", "登录成功") # 退出操作 self.login.page_login_logout() self.login.page_click_me() self.login.page_click_info() except: # 截图 self.login.base_getImage() with open("./Image/failed.png", "rb") as f: allure.attach("登录失败描述:", f.read(), allure.attach_type.PNG) # 抛异常 raise else: # 登录 不能使用登录的封装(因为逆向只有第一次需要点击我的和已有账户登录) # self.login.page_login(username,password) # 以下两个操作放到setup中(以至于正向的操作 也不能使用登录和退出的封装) # self.login.page_click_me() # self.login.page_click_info() self.login.page_input_user(username) self.login.page_input_pwd(password) self.login.page_click_login_btn() try: # 断言toast assert toast_expect in self.login.base_get_toast(toast_expect) allure.attach("登录状态:", "逆向断言成功") except: # 截图 self.login.base_getImage() with open('./Image/failed.png', 'rb') as f: allure.attach("断言失败描述:", f.read(), allure.attach_type.PNG) # 抛异常 raise
def page_get_login(self): return PageLogin(driver)
def setup_class(self): self.driver = GetDriver().get_driver() self.login = PageLogin(self.driver)
class TestAddress(): def setup_class(self): # 实例化地址管理页面 self.address = PageAddress(get_driver()) # 登录成功 # 实例化登录页面 self.login = PageLogin(get_driver()) self.login.page_login('13331172859','123456') # 点击设置 self.login.page_click_setting() # 点击地址管理 self.address.page_click_address_manage() def teardown_class(self): # 退出 self.address.driver.quit() @pytest.mark.run(order=1) @pytest.mark.parametrize("receipt_name,phone,province,city,region,detail_addr,post_code", get_data('new')) def test_address(self, receipt_name, phone, province, city, region, detail_addr, post_code): # 点击新增地址 self.address.page_click_new_address() # 输入收件人 self.address.page_input_receipt_name(receipt_name) # 输入手机号 self.address.page_input_phone(phone) # 选择地区 self.address.page_click_area(province, city, region) # 输入详细地址 self.address.page_input_detail_address(detail_addr) # 输入邮编 self.address.page_input_post_code(post_code) # 设置默认地址 self.address.page_click_address_default() # 点击保存 self.address.page_click_save() # 断言方式一:新增地址设置默认,通过id定位取默认地址的用户名和电话 # 因为添加的多个地址的用户名和电话 的id都是一样的,默认获取的是默认地址的信息 # (如果新增的地址没有设置默认,那么新增成功,断言也会失败) # 断言方式二:find_elements获取地址管理中所有的用户名手机号的文本信息 # base 封装个elemets方法 # page 封装定位获取一组元素文本方法 # 该文件中调用 try: # assert receipt_name in self.address.page_get_receipt_name_phone() # print('新增用户名电话:',receipt_name,phone) info = receipt_name + ' ' + phone assert info in self.address.page_get_receipt_name_phone_s() print(self.address.page_get_receipt_name_phone_s()) except: # 新增失败截图 self.address.base_getImage() with open('./Image/failed.png', 'rb') as f: allure.attach("新增地址失败:", f.read(), allure.attach_type.PNG) # 抛异常 raise @pytest.mark.run(order=2) @pytest.mark.parametrize("receipt_name,phone,province,city,region,detail_addr,post_code,expect_toast", get_data('update')) def test_address_change(self,receipt_name,phone,province,city,region,detail_addr,post_code,expect_toast): # 点击编辑 self.address.page_click_ymtitlebar_right_btn() # 点击修改:默认第一个 # self.address.page_click_modify() # 点击修改:列表下标 self.address.page_click_modify_s() # 修改收件人 self.address.page_input_receipt_name(receipt_name) # 修改电话 self.address.page_input_phone(phone) # 修改所在地址 self.address.page_click_area(province,city,region) # 修改详细地址 self.address.page_input_detail_address(detail_addr) # 修改邮编 self.address.page_input_post_code(post_code) # 点击保存 self.address.page_click_button_send() try: """断言方式一:同新增的断言:判断修改后的用户名密码""" # info = receipt_name+' '+phone # assert info in self.address.page_get_receipt_name_phone_s() # print(self.address.page_get_receipt_name_phone_s()) """断言方式二:toast获取文本断言""" assert expect_toast in self.address.base_get_toast(expect_toast) except: # 修改失败截图 self.address.base_getImage() with open('./Image/failed.png','rb') as f: allure.attach("新增地址失败:",f.read(),allure.attach_type.PNG) # 抛异常 raise @pytest.mark.run(order=3) def test_address_delete(self): # 删除第一个地址 # # 点击编辑 # self.address.page_click_ymtitlebar_right_btn() # # 点击第一个删除 # self.address.page_click_delete() # # 确认删除 # self.address.page_click_delete_ok() # 删除所有地址(调用page中的方法(获取所有地址,进行循环遍历,逐个点击删除)) self.address.page_click_delete_s() try: assert self.address.page_is_delete() except: # 截图 self.login.base_getImage() with open("./Image/faild.png", "rb") as f: allure.attach("断言失败描述:", f.read(), allure.attach_type.PNG) # 抛异常 raise
def setup_class(self): self.driver = get_driver("com.vcooline.aike", ".umanager.LoginActivity") self.login = PageLogin(self.driver)
def setup_class(self): self.login=PageLogin(get_driver()) self.login.page_click_me() self.login.page_click_info()
class TestLogin(): def setup_class(self): self.login=PageLogin(get_driver()) self.login.page_click_me() self.login.page_click_info() def teardown_class(self): self.login.driver.quit() @pytest.mark.parametrize(("username,password,expect,toast_expect"),get_data()) def test_login(self,username,password,expect,toast_expect): # 默认为TRUE,如果expect为TRUE代表有值也就是正向用例,需要进行以下操作 # 通过模拟功能测试得出思路 if expect: # 进行异常捕获 try: # 输入用户名 self.login.page_input_username(username) # 输入密码 self.login.page_input_pwd(password) # 点击登录 self.login.page_click_dl_btn() # 断言登录后的名称 assert expect in self.login.page_get_nickname() allure.attach("登录状态: ","登录成功") # 退出登录 self.login.page_exit() # 点击我的 self.login.page_click_me() # 点击已有账户立即登录 self.login.page_click_info() # 如果出现异常就截图保存 except: # 调用截图方法 self.login.base_get_screenshot() # 打开截图 with open("./Image/filed.png","rb") as f: # 写入报告中,三个参数:描述,读取文件,写入报告格式声明 png allure.attach("登录失败描述",f.read(),allure.attach_type.PNG) raise # 相反也就是expect为空,对应的就是逆向,需要执行的操作 else: try: # 输入用户名 self.login.page_input_username(username) # 输入密码: self.login.page_input_pwd(password) # 点击登录 self.login.page_click_dl_btn() # 断言toast_expect消息 # 调用获取toast消息方法,动态判断登录后的是否相等 assert toast_expect in self.login.base_get_toast(toast_expect) allure.attach("登录状态","逆向断言成功") except: self.login.base_get_screenshot() with open("./Image/filed.png","rb") as f : allure.attach("登录失败描述",f.read(),allure.attach_type.PNG) raise
class TestLogin(): def setup_class(self): # 实例化 登录页面类 self.login = PageLogin(get_driver()) # 点击我 self.login.page_click_me() # 点击已有账户 self.login.page_click_info() def teardown_class(self): # 退出driver驱动 self.login.driver.quit() @pytest.mark.parametrize("username,password,expect,toast_expect", get_data()) def test_login(self, username, password, expect, toast_expect): if expect: try: # 输入用户名 self.login.page_input_user(username) # 输入密码 self.login.page_input_pwd(password) # 点击登录 self.login.page_click_login_btn() # 断言 assert expect in self.login.page_get_nickname() allure.attach("描述:", "登录成功") # 退出操作 self.login.page_login_logout() # 点击我 self.login.page_click_me() # 点击已有账户 self.login.page_click_info() except: # 截图 self.login.base_getImage() with open("./Image/faild.png", "rb") as f: allure.attach("失败描述:", f.read(), allure.attach_type.PNG) # 抛异常 raise else: try: # 输入用户名 self.login.page_input_user(username) # 输入密码 self.login.page_input_pwd(password) # 点击登录 self.login.page_click_login_btn() # 断言 assert toast_expect in self.login.base_get_toast(toast_expect) allure.attach("断言描述", "逆向断言成功") except: # 截图 self.login.base_getImage() with open("./Image/faild.png", "rb") as f: allure.attach("断言失败描述:", f.read(), allure.attach_type.PNG) # 抛异常 raise
def page_get_login_object(self): return PageLogin(self.driver)
def page_get_login(self): # 实例化pagelogin封装类 return PageLogin(self.driver)