class TestContact: def setup(self): self.driver = init_driver() self.page = Page(self.driver) @pytest.mark.parametrize("args", analyze_data("contact_data", "test_add_phone")) def test_add_phone(self, args): name = args["name"] nickname = args["nickname"] phone = args["phone"] self.page.contact.click_add_contact() self.page.add_contact.input_name(name) self.page.add_contact.input_nickname(nickname) self.page.add_contact.input_phone(phone) # self.page.add_contact.press_back() # assert self.page.saved_contact.get_name_text_vie_text() == name @pytest.mark.parametrize("args", analyze_data("contact_data", "test_add_email")) def test_add_email(self, args): name = args["name"] email = args["email"] self.page.contact.click_add_contact() self.page.add_contact.input_name(name) self.page.add_contact.input_email(email)
class TestLogin: def setup(self): self.driver = init_driver() self.page = Page(self.driver) @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): phone = args["phone"] password = args["password"] expect = args["expect"] self.page.home.click_mine() self.page.mine.click_login_and_signup() self.page.login.input_phone(phone) self.page.login.input_password(password) self.page.login.click_login() assert self.page.login.is_toast_exits(expect) @pytest.mark.parametrize("args", analyze_data("login_data", "test_login_miss_part")) def test_login_miss_part(self, args): phone = args["phone"] password = args["password"] self.page.home.click_mine() self.page.mine.click_login_and_signup() self.page.login.input_phone(phone) self.page.login.input_password(password) assert not self.page.login.is_login_button_enabled()
class TestHello: # @pytest.mark.parametrize("i", ["zhangsan", "lisi", "wangwu"]) @pytest.mark.parametrize("args", analyze_data("hello_data", "test_hello1")) def test_hello1(self, args): i = args["i"] print(i) # @pytest.mark.parametrize("username,password", [("zs", "zs123"), ("ls", "ls123")]) @pytest.mark.parametrize("args", analyze_data("hello_data", "test_hello2")) def test_hello2(self, args): username = args["username"] password = args["password"] print(username) print(password)
class TestContact: def setup(self): self.driver = init_driver() self.page = Page(self.driver) # @pytest.mark.parametrize(("name", "phone"), [("zhangsan", "188"), ("lisi", "177")]) @pytest.mark.parametrize("args", analyze_data("contact_data", "test_add_contact")) def test_add_contact(self, args): name = args["name"] phone = args["phone"] # 联系人列表 - 点击 新建联系人 self.page.contact_list.click_new_contact() # 新建联系人 - 输入 姓名 self.page.new_contact.input_name(name) # 新建联系人 - 输入 电话 self.page.new_contact.input_phone(phone) # @pytest.mark.parametrize(("name", "phone"), [("zhangsan", "188"), ("lisi", "177")]) # def test_delete_contact(self, name, phone): # # 联系人列表 - 点击 新建联系人 # self.page.contact_list.click_new_contact() # # 新建联系人 - 输入 姓名 # self.page.new_contact.input_name(name) # # 新建联系人 - 输入 电话 # self.page.new_contact.input_phone(phone)
class TestSend: @pytest.fixture(params=["Firefox"], autouse=True) def setup(self, request): exec("from selenium import webdriver") self.driver = eval("webdriver.%s()" % request.param) self.driver.get("https://mail.163.com") self.page = Page(self.driver) def teardown(): self.driver.quit() request.addfinalizer(teardown) @pytest.mark.parametrize("args", analyze_data()) def test_send(self, args): addressee = args["addressee"] title = args["title"] content = args["content"] self.page.login.login() self.page.home.click_write() self.page.write.input_addressee(addressee) self.page.write.input_title(title) self.page.write.input_content(content) self.page.write.click_send() assert self.page.write.is_send_success()
class TestLogin: def setup(self): self.driver = init_driver(no_reset=False) self.page = Page(self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): username = args["username"] password = args["password"] toast = args["toast"] # 首页 点击 我 self.page.home.click_me() # 注册 点击 已有账号去登陆 self.page.register.click_login() # 登录 输入 用户名 self.page.login.input_username(username) # 登录 输入 密码 self.page.login.input_password(password) # 登录 点击 登录 self.page.login.click_login() if toast is None: # 如果 toast 为 none,表示 登录成功的断言 assert self.page.me.get_username_text() == "itheima_test" assert self.driver.current_activity != "com.yunmall.ymctoc.ui.activity.LogonActivity" else: # 如果 toast 有值,表示 预期失败,通过toast的内容断言 assert self.page.login.is_toast_exist(toast)
class TestSearch: def setup(self): # 创建一个字典,包装相应的启动参数 desired_caps = dict() # 需要连接的手机的平台(不限制大小写) desired_caps['platformName'] = 'Android' # 需要连接的手机的版本号(比如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推) desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写) desired_caps['deviceName'] = '192.168.56.101:5555' # 需要启动的程序的包名 desired_caps['appPackage'] = 'com.android.contacts' # 需要启动的程序的界面名 desired_caps['appActivity'] = '.activities.PeopleActivity' # 告诉系统不需要重置 desired_caps['noReset'] = True # 解决中文问题 desired_caps['unicodeKeyboard'] = True desired_caps['resetKeyboard'] = True # 连接appium服务器 self.driver = webdriver.Remote('http://192.168.1.2:4723/wd/hub', desired_caps) self.contact_list_page = ContactListPage(self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", analyze_data("search_data.yaml", "test_search")) def test_search(self, args): key = args["key"] self.contact_list_page.click_search() self.contact_list_page.input_search(key)
class TestLogin: # 浏览器驱动对象获取 def setup(self): self.driver = DriverUtils.get_driver() self.index = PageIndex(self.driver) self.login = PageLogin(self.driver) self.driver.get('http://192.168.2.133/') # 浏览器驱动对象关闭 def teardown(self): DriverUtils.quit_driver() @pytest.mark.parametrize('params', analyze_data("login_data.json")) def test_login(self, params): # 1. 点击首页的 ‘登录’ 链接,进入登录页面 self.index.click_login_link() # 2. 输入一个不存在的用户名 self.login.get_username(params['username']) # 3. 输入密码 self.login.get_password(params['password']) # 4. 输入验证码 self.login.get_code(params['code']) # 5. 点击登录按钮 self.login.click_login_button() # 6. 获取错误提示信息 time.sleep(3) msg = self.login.get_error_msg() print(msg) assert params['msg'] == msg
class TestLogin: def setup(self): self.driver = init_driver(False) self.page = Page(self.driver) @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): # 获取数据 username = args["username"] password = args["password"] toast = args["toast"] # 首页 - 点击 我 self.page.home.click_me() # 注册 - 点击 已有账号去登陆 self.page.register.click_login() # 登陆 - 输入 账户 self.page.login.input_username(username) # 登陆 - 输入 密码 self.page.login.input_password(password) # 登陆 - 点击 登陆 self.page.login.click_login() if toast is None: # 断言:"我"页面的用户名内容,是否和输入一致 assert self.page.me.get_username_text() == "itheima_test" else: # 断言:toast内容是否和预期一致 assert self.page.login.is_toast_exist(toast)
class TestLogin: def setup(self): self.driver = init_driver(False) self.page = Page(self.driver) def test_hello(self): self.page.home.login_if_not(self.page) @pytest.mark.parametrize("args", analyze_data("login_data.yaml", "test_login")) def test_login(self, args): username = args["username"] password = args["password"] expect = args["expect"] # 首页 点击 我 self.page.home.click_me() # 注册 点击 已有账号去登陆 self.page.reg.click_go_to_login() # 登陆 输入 用户名 self.page.login.input_username(username) # 登陆 输入 密码 self.page.login.input_password(password) # 登陆 点击 登陆 self.page.login.click_login() if expect is None: # 断言 assert self.page.me.get_username() == username else: assert self.page.login.is_toast_exist(expect)
class TestLogin: def setup(self): self.driver = init_driver(no_reset=False) self.page = Page(self.driver) def teardown(self): time.sleep(3) self.driver.quit() def test_login(self): self.page.home.login_if_not(self.page) @pytest.mark.parametrize('args', analyze_data('login_data.yaml', 'test_login')) def test_login(self, args): username = args['username'] password = args['password'] expect = args['expect'] self.page.home.click_me() self.page.me.click_have_login() self.page.login_home.input_user(username) self.page.login_home.input_pw(password) self.page.login_home.click_login_button() if expect is None: assert self.page.me_home.get_user() == username else: assert self.page.me_home.is_toast_exist(expect)
class TestAoLai: def setup(self): # 创建一个字典,包装相应的启动参数 desired_caps = dict() # 需要连接的手机的平台(不限制大小写) desired_caps['platformName'] = 'Android' # 需要连接的手机的版本号(比如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推) desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写) desired_caps['deviceName'] = 'huawei p30' # 需要启动的程序的包名 desired_caps['appPackage'] = 'com.yunmall.lc' # 需要启动的程序的界面名 desired_caps[ 'appActivity'] = 'com.yunmall.ymctoc.ui.activity.MainActivity' # 不重置 desired_caps['noReset'] = True # 可以输入中文 desired_caps['unicodeKeyboard'] = True desired_caps['resetKeyboard'] = True # 连接appium服务器 self.driver = webdriver.Remote('http://*****:*****@pytest.mark.parametrize("args", analyze_data("date", "test_ao")) def test_ao(self, args): name = args["name"] tel = args["tel"] location = args["location"] # 关闭更新 self.home_page.click_close_button() # 点击右下角的我 self.home_page.click_me_button() # 点击右上角的设置按钮 self.sec_page.click_settings_button() # 点击地址管理 self.third_page.click_manger_location() # 点击新增地址 self.third_page.click_new_location() # # 输入收件人 self.fourth_page.input_receive_people(name) # 输入手机号 self.fourth_page.input_tel_number(tel) # 随机选择地区 self.fourth_page.click_your_location() self.fourth_page.choose() # 输入详细地址 self.fourth_page.input_edit_your_location(location) # 设为默认值 self.fourth_page.click_default() # 点击保存 self.fourth_page.click_saved_btn()
class TestVip: def setup(self): self.driver = init_driver() self.page = Page(self.driver) @pytest.mark.parametrize("args", analyze_data("vip_data", "test_vip")) def test_vip(self, args): # 解析的数据 invite_code = args["invite_code"] toast = args["toast"] # 首页 - 如果没有登录,则登录,并停留在 "我" 的页面 self.page.home.login_if_not(self.page) # 我 - 点击 加入超级Vip self.page.me.click_vip() # 加入超级Vip 是一个 webview 需要切换环境 self.driver.switch_to.context("WEBVIEW_com.yunmall.lc") # vip - 输入 邀请码 self.page.vip.input_invite_code(invite_code) # vip - 点击 成为会员 self.page.vip.click_be_vip() assert self.page.vip.is_can_not_be_vip(toast) # assert WebDriverWait("邀请码输入不正确", 10, 1).until(lambda x: x in self.driver.page_source) # assert "邀请码输入不正确" in self.driver.page_source # 切换回原生的环境 self.driver.switch_to.context("NATIVE_APP")
class TestLogin: def setup(self): self.driver = DriverUtils.get_driver() DriverUtils.set_switch(True) self.index_page = IndexPage(self.driver) self.login_page = LoginPage(self.driver) self.driver.get("http://localhost/") def teardown(self): time.sleep(3) DriverUtils.quit_driver() @pytest.mark.parametrize("params", analyze_data("login_data.json")) def test_login(self, params): self.index_page.click_login_link() logging.info("login with {}--{}--{}".format(params["username"], params["password"], params["code"])) self.login_page.input_username(params["username"]) self.login_page.input_password(params["password"]) self.login_page.input_verify_code(params["code"]) self.login_page.click_login_btn() # 登录成功需要时间, 暂停几秒等页面跳转 logging.info("wait 5s for page display") time.sleep(5) assert params["msg"] in self.driver.title
class TestLogin: def setup(self): self.driver = init_driver(no_reset=False) self.page = Page(self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): username = args["username"] password = args["password"] toast = args["toast"] # 首页 - 点击关闭 self.page.home.click_close() # 首页 - 点击我 self.page.home.click_me() # 注册 - 点击去登陆 self.page.reg.click_login() # 登录 - 输入用户名 self.page.login.input_username(username) # 登录 - 输入密码 self.page.login.input_password(password) # 登录 - 点击登录 self.page.login.click_login() # 判断用那种方式断言 if toast is None: # 我 - 进行断言 assert self.page.me.get_nikename_text() == username else: # 使用 toast 断言 assert self.page.login.is_toast_exist(toast)
class TestVip: def setup(self): self.driver = init_driver() self.page = Page(self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", analyze_data("vip_data", "test_vip")) def test_vip(self, args): keyword = args["keyword"] toast = args["toast"] # 在首页判断登录状态,如果没有登录则登录 self.page.home.login_if_not(self.page) # 我 点击 加入vip self.page.me.click_vip() print(self.driver.contexts) # 切换到对应的 webview self.driver.switch_to.context("WEBVIEW_com.yunmall.lc") # vip 输入 邀请码 self.page.vip.input_invite_code(keyword) # vip 点击 成为vip self.page.vip.click_be_vip() assert self.page.vip.is_can_not_be_vip(toast) # 切换到原生的环境 self.driver.switch_to.context("NATIVE_APP")
class TestPython: # @pytest.mark.parametrize(("a", "b", "c"), [("111", "222", "333"),("444", "55", "66"),("7", "8", "9")]) @pytest.mark.parametrize("args", analyze_data("python_data", "test_py1")) def test_py1(self, args): a = args["a"] # @pytest.mark.parametrize(("x", "y"), [("123", "321"), ("321", "123")]) @pytest.mark.parametrize("args", analyze_data("python_data", "test_py2")) def test_py2(self, args): print(args) print("hello")
class TestLogin: @pytest.mark.parametrize("args", analyze_data("login_data.yaml", "test_login")) def test_login(self, args): age = args["age"] name = args["name"] height = args["height"] print(age) print(name) print(height)
class TestDisplay: def setup(self): self.driver = init_driver() self.page = Page(self.driver) def teardown(self): self.driver.quit() @pytest.mark.parametrize("args", analyze_data("search", "test_search")) def test_search(self, args): value = args["value"] self.page.display.click_search() self.page.search.input_search(value) self.page.search.click_back()
class TestMessage: def setup(self): self.driver = init_driver() self.page = Page(self.driver) @pytest.mark.parametrize("args", analyze_data("message_data", "test_send_message")) def test_send_message(self, args): message = args["name"] phone = args["phone"] self.page.message_list.click_add_message() self.page.new_message.input_phone(phone) self.page.new_message.input_message(message) self.page.new_message.click_send_message()
class TestContact: def setup(self): # 创建一个字典,包装相应的启动参数 desired_caps = dict() # 需要连接的手机的平台(不限制大小写) desired_caps['platformName'] = 'Android' # 需要连接的手机的版本号(比如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推) desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写) desired_caps['deviceName'] = 'huawei p30' # 需要启动的程序的包名 desired_caps['appPackage'] = 'com.android.contacts' # 需要启动的程序的界面名 desired_caps['appActivity'] = '.activities.PeopleActivity' # 连接appium服务器 self.driver = webdriver.Remote('http://192.168.31.50:4723/wd/hub', desired_caps) # 创建页面 self.add_contact_page = AddContactPage(self.driver) self.contact_list_page = ContactListPage(self.driver) self.saved_page = SavedPage(self.driver) def teardown(self): self.driver.quit() def test_login(self): print("123123") print("123123") @pytest.mark.parametrize("args", analyze_data("contact_data", "test_add_contact")) def test_add_contact(self, args): name = args["name"] phone = args["phone"] # 联系人列表 - 点击 - 添加 self.contact_list_page.click_add_contact() # 添加联系人 - 点击 - 本地保存 self.add_contact_page.click_local_save() # 添加联系人 - 输入 - 姓名 self.add_contact_page.input_name(name) # 添加联系人 - 输入 - 电话 self.add_contact_page.input_phone(phone) # 添加联系人 - 点击 - 返回 self.add_contact_page.click_back() # 断言: 保存成功 - 获取 - 大标题的文字 == 输入的用户名 assert self.saved_page.get_title_text() == name
class TestLogin: def setup(self): self.driver = init_driver(no_reset=True) self.page = Page(self.driver) #self.home_page = HomePage(self.driver) #self.reg_page = RegPage(self.driver) #self.login_page = LoginPage(self.driver) #self.me_page = MePage(self.driver) def teardown(self): time.sleep(3) self.driver.quit() @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): self.page.home.login_if_not(self.page.reg(), self.page.login()) # username = args["username"] # password = args["password"] # toast = args["toast"] # '''点击关闭更新''' # self.home_page.click_close() # '''点击我的''' # self.home_page.click_me() # '''点击登录账号密码登录''' # self.reg_page.click_login() # '''输入账号''' # self.login_page.input_username(username) # '''输入密码''' # self.login_page.input_paswrod(password) # '''点击登录''' # self.login_page.click_login() #获取注册界面属性 #def test_dome(self): # self.home_page.click_close() # self.home_page.login_if_not() # #if toast is None: # #用用户名的形式断言 # assert self.me_page.get_nikeyname_text() == username # print("已登录") #else: # # 用toast参数的形式断言 # assert self.login_page.is_toast_exist(toast) # print("未登录")
class TestContact: def setup(self): # 创建一个字典,包装相应的启动参数 desired_caps = dict() # 需要连接的手机的平台(不限制大小写) desired_caps['platformName'] = 'Android' # 需要连接的手机的版本号(比如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推) desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写) desired_caps['deviceName'] = '192.168.56.101:5555' # 需要启动的程序的包名 desired_caps['appPackage'] = 'com.android.contacts' # 需要启动的程序的界面名 desired_caps['appActivity'] = '.activities.PeopleActivity' # 告诉系统不需要重置 desired_caps['noReset'] = True # 连接appium服务器 self.driver = webdriver.Remote('http://*****:*****@pytest.mark.parametrize(("name", "phone"), [("zhangsan", "177"), ("lisi", "188")]) # def test_add_contact(self, name, phone): # self.contact_list_page.click_add_contact() # self.edit_contact_page.input_name(name) # self.edit_contact_page.input_phone(phone) @pytest.mark.parametrize("args", analyze_data("contact_data.yaml", "test_add_contact")) def test_add_contact(self, args): name = args["name"] phone = args["phone"] self.contact_list_page.click_add_contact() self.edit_contact_page.input_name(name) self.edit_contact_page.input_phone(phone)
class TestLogin: def setup(self): self.driver = init_driver(no_reset=False) self.page = Page(self.driver) # self.home_page = HomePage(self.driver) # self.login_page = LoginPage(self.driver) # self.reg_page = RegPage(self.driver) # self.me_page = MePage(self.driver) def teardown(self): time.sleep(3) self.driver.quit() # def test_hello(self): # # self.home_page.login_if_not(self.reg_page, self.login_page) # self.page.home.login_if_not(self.page) @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): username = args["username"] password = args["password"] toast = args["toast"] # 点击关闭 self.page.home.click_close() # 点击我 self.page.home.click_me() # 点击已有账号去登陆 self.page.reg.click_login() # 输入用户名 self.page.login.input_username(username) # 输入密码 self.page.login.input_password(password) # 点击登录 self.page.login.click_login() if toast is None: # 用用户名的形式断言 assert self.page.me.get_nikename_text() == username else: # 用toast的形式断言 assert self.page.login.is_toast_exist(toast)
class TestAddContact: def setup(self): self.driver = init_driver() self.page = Page(self.driver) def teardown(self): self.driver.quit() # zhangsan, 188 # lisi, 177 # wangwu, 166 @pytest.mark.parametrize("args", analyze_data("add_contact_data", "test_add_contact")) def test_add_contact(self, args): name = args["name"] phone = args["phone"] # 联系人列表 - 点击添加联系人 self.page.contact_list.click_add_contact() # 添加联系人 - 点击本地保存 self.page.add_contact.click_local() # 添加联系人 - 输入姓名 self.page.add_contact.input_name(name) # 添加联系人 - 输入电话 self.page.add_contact.input_phone(phone) # 添加联系人 - 点击返回 self.page.add_contact.click_back() # 截图 self.driver.get_screenshot_as_file("xx.png") try: # 保存页面 - 断言 大标题的内容 是否与输入的用户名一致 assert self.page.contact_saved.get_large_title_text( ) == name + "123" except Exception as e: # 将图片添加到报告中 allure.attach.file("xx.png", attachment_type=allure.attachment_type.PNG) assert self.page.contact_saved.get_large_title_text( ) == name + "123456"
class TestContact: def setup(self): # 创建一个字典,包装相应的启动参数 desired_caps = dict() # 需要连接的手机的平台(不限制大小写) desired_caps['platformName'] = 'Android' # 需要连接的手机的版本号(比如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推) desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写) desired_caps['deviceName'] = '192.168.56.101:5555' # 需要启动的程序的包名 desired_caps['appPackage'] = 'com.android.contacts' # 需要启动的程序的界面名 desired_caps['appActivity'] = '.activities.PeopleActivity' # 不重置应用 desired_caps['noReset'] = True # 连接appium服务器 self.driver = webdriver.Remote('http://192.168.1.42:4723/wd/hub', desired_caps) # 创建页面对象 self.add_contact_page = AddContactPage(self.driver) self.contact_list_page = ContactListPage(self.driver) self.res_page = ResPage(self.driver) def teardown(self): time.sleep(2) self.driver.quit() @pytest.mark.parametrize("args", analyze_data("contact_data", "test_add_contact")) def test_add_contact(self, args): name = args["name"] phone = args["phone"] self.contact_list_page.click_add_contact() self.add_contact_page.input_name(name) self.add_contact_page.input_phone(phone) self.add_contact_page.click_back() assert self.res_page.get_title_text() == name
class TestVip: def setup(self): self.driver = init_driver() self.page = Page(self.driver) @pytest.mark.parametrize("args", analyze_data("vip_data.yaml", "test_vip")) def test_vip(self, args): code = args["code"] expect = args["expect"] # 如果没有登录则登录,此时会停留在"我"的页面 self.page.home.login_if_not(self.page) # 我 点击 vip self.page.me.click_vip() # vip 输入 邀请码 self.page.vip.input_code(code) # vip 点击 成为会员 self.page.vip.click_be_vip() assert self.page.vip.is_can_not_be_vip(expect)
class TestDisplay: def setup(self): self.driver = init_driver() self.page = Page(self.driver) def teardown(self): self.driver.quit() @pytest.allure.severity(pytest.allure.severity_level.BLOCKER) # BLOCKER最严重 # CRITICAL严重 # NORMAL普通 # MINOR不不严重 # TRIVIAL最不不严重 @pytest.mark.parametrize("args", analyze_data("search", "test_search")) def test_search(self, args): value = args["value"] self.page.display.click_search() self.page.search.input_search(value) self.page.search.click_back()
class TestLogin: def setup(self): self.driver = init_driver() self.page = Page(self.driver) def teardown(self): time.sleep(2) self.driver.quit() # 1登录参数化正常流程 @pytest.mark.parametrize("args", analyze_data("login_data", "test_login")) def test_login(self, args): # 解析数据 username = args["phone"] password = args["password"] toast = args["expect"] # 首页 - 点击 我 self.page.home_page.click_mine() # 注册 - 点击 登录/注册 self.page.mine_page.click_login_and_sign_up() # 登录- 输入 用户名 self.page.login_and_sign_up_page.input_phone(username) # 登录- 输入 密码 self.page.login_and_sign_up_page.input_password(password) # 登登录 - 点击 登录 self.page.login_and_sign_up_page.click_login() # 断言 toast assert self.page.login_and_sign_up_page.is_login_toast(toast) print("判断 登录参数化") # 2判断 登录名和密码有一个为空登录按钮是否可用状态 @pytest.mark.parametrize("args", analyze_data("login_data_if", "test_login_if")) def test_login_if(self, args): # 获取数据 username = args["phone"] password = args["password"] # 首页 - 点击 我 self.page.home_page.click_mine() # 注册 - 点击 登录/注册 self.page.mine_page.click_login_and_sign_up() # 登录- 输入 用户名 self.page.login_and_sign_up_page.input_phone(username) # 登录- 输入 密码 self.page.login_and_sign_up_page.input_password(password) # 判断登录按钮是否可用 assert not self.page.login_and_sign_up_page.is_login_enabled("enabled") print("判断 登录按钮 是否可用") # if self.page.login_and_sign_up_page.is_login_enabled() == False: # assert True # else: # assert False # 登录名和密码有一个为空判断登录按钮是否可用状态 # 3判断 密码眼睛是否可用 @pytest.mark.parametrize( "password", [random_password(), random_password()]) def test_show_password(self, password): # 首页 - 点击 我 self.page.home_page.click_mine() # 注册 - 点击 登录/注册 self.page.mine_page.click_login_and_sign_up() # 登录- 输入 密码 self.page.login_and_sign_up_page.input_password(password) # 判断 输入的密码找不到 assert not self.page.login_and_sign_up_page.is_password_eys_show( password) # 点击显示密码 self.page.login_and_sign_up_page.click_show_password_eys() # 找到 输入的密码 assert self.page.login_and_sign_up_page.is_password_eys_show(password) print("判断 密码眼睛 是否可用")
class TestAddAddress: def setup(self): # 创建一个字典,包装相应的启动参数 desired_caps = dict() # 需要连接的手机的平台(不限制大小写) desired_caps['platformName'] = 'Android' # 需要连接的手机的版本号(比如 5.2.1 的版本可以填写 5.2.1 或 5.2 或 5 ,以此类推) desired_caps['platformVersion'] = '5.1' # 需要连接的手机的设备号(andoird平台下,可以随便写,但是不能不写) desired_caps['deviceName'] = '192.168.56.101:5555' # 需要启动的程序的包名 desired_caps['appPackage'] = 'com.yunmall.lc' # 需要启动的程序的界面名 desired_caps[ 'appActivity'] = 'com.yunmall.ymctoc.ui.activity.MainActivity' # 告诉appium不重置应用 desired_caps['noReset'] = True # 支持中文 desired_caps['unicodeKeyboard'] = True desired_caps['resetKeyboard'] = True # 连接appium服务器 self.driver = webdriver.Remote('http://*****:*****@pytest.mark.parametrize('args', analyze_data('address_data', 'test_add_address_case')) def test_add_address_case(self, args): name = args['name'] phone = args['phone'] address = args['address'] postcode = args['postcode'] # 关闭更新 self.home_page.click_close_update() # 点击我的 self.home_page.click_my_button() # 点击设置 self.my_page.click_set_button() # 点击地址管理 self.my_page.click_adress_button() # 点击新增地址 self.address_page.click_add_address() # 点击输入姓名 self.add_address_page.input_name(name) # 点击输入手机号码 self.add_address_page.input_phone(phone) # 点击省市区 self.add_address_page.click_province() # 点击添加输入详细地址 self.add_address_page.input_address(address) # 点击输入邮编 self.add_address_page.input_postcode(postcode) # 点击选择默认地址 self.add_address_page.click_default_address() # 点击保存 self.add_address_page.click_save() # 断言 新增默认地址是否是预期 assert self.address_page.get_default_name_phone_text() == '%s %s' % ( name, phone)