线下第二期_Python 测试用例管理与 Appium 实战_20180804

Python安装Pyenv

https://github.com/pyenv/pyenv-installer

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

Python Client

https://github.com/appium/python-client

Python测试框架PyTest

https://docs.pytest.org/en/latest/
添加依赖

  • pytest
  • pytest-html
  • PyHarmcrest

参考代码

loginpage.py

from selenium.webdriver.common.by import By

import pages
from pages.basepage import BasePage

class LoginPage(BasePage):

    profile_login_tv=(By.ID, "tv_login")
    login_login_tv_phone = (By.XPATH, "//*[@text='手机及其他登录']")
    login_login_tv_phone_pasword = (By.XPATH, "//*[@text='邮箱手机号密码登录']")
    phone_edit=(By.ID, "login_account")
    password_edit=(By.ID, "login_password")
    button_next=(By.ID, "button_next")


    def login(self, username, password):
        from pages.mainpage import MainPage
        self.driver.find_element(*self.profile_login_tv).click()
        self.driver.find_element(*self.login_login_tv_phone).click()
        self.driver.find_element(*self.login_login_tv_phone_pasword).click()
        self.driver.find_element(*self.phone_edit).send_keys(username)
        self.driver.find_element(*self.password_edit).send_keys(password)
        self.driver.find_element(*self.button_next).click()

        return MainPage(self.driver)

mainpage.py

from selenium.webdriver.common.by import By

from pages.basepage import BasePage
from pages.loginpage import LoginPage
from pages.searchpage import SearchPage
import pages.loginpage

class MainPage(BasePage):

    search_text=(By.ID, "tv_search")
    cancel_button=(By.ID, "cancel")
    profile_icon=(By.ID, "user_profile_icon")

    def enter_search(self):
        self.driver.find_element(*self.cancel_button).click()
        self.driver.find_element(*self.search_text).click()
        return SearchPage(self.driver)

    def enter_login(self):
        self.driver.find_element(*self.cancel_button).click()
        self.driver.find_element(*self.profile_icon).click()
        return LoginPage(self.driver)

searchpage.py

from selenium.webdriver.common.by import By

from pages.basepage import BasePage


class SearchPage(BasePage):

    search_edit=(By.ID, "search_input_text")
    stock_name_first=(By.ID, "stockName")

    def search(self, key):
        self.driver.find_element(*self.search_edit).send_keys(key)

    def get_name_by_first_stock(self):
        return self.driver.find_element(*self.stock_name_first).text

test_login.py



import  pytest
import unittest

from pages.mainpage import MainPage
from util.appium import setup_appium


class login(unittest.TestCase):
    def test_login_by_right(self):
        driver = setup_appium()
        main = MainPage(driver)
        login_page=main.enter_login()
        login_page.login("15600534760", "xueqiu12345678")

test_main.py


from appium import webdriver
from time import sleep
import unittest
import pytest

from pages.mainpage import MainPage
from util.appium import setup_appium


@pytest.mark.parametrize("key, name", [
    ("PDD", "拼多多"),
    ("pingan", "平安银行"),
    ("xiaomi", "小米集团")
])
def test_search(key, name):
    driver = setup_appium()
    main=MainPage(driver)
    search_page=main.enter_search()
    search_page.search(key)
    assert search_page.get_name_by_first_stock()==name