Example #1
0
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)
Example #2
0
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()
Example #3
0
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)
Example #4
0
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)
Example #5
0
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()
Example #6
0
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)
Example #7
0
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)
Example #8
0
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
Example #9
0
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)
Example #10
0
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)
Example #11
0
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)
Example #12
0
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()
Example #13
0
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")
Example #14
0
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
Example #15
0
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)
Example #16
0
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")
Example #17
0
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")
Example #18
0
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)
Example #19
0
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()
Example #21
0
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
Example #22
0
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("未登录")
Example #23
0
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)
Example #24
0
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)
Example #25
0
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"
Example #26
0
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
Example #27
0
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)
Example #28
0
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()
Example #29
0
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("判断 密码眼睛 是否可用")
Example #30
0
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)