Pytest實戰UI測試框架2

步驟漸進

用例之間不應相互依賴,如果部分用例擁有相同的業務流程,如都需要,打開登錄頁->登錄->點擊添加商品菜單->進入添加商品頁面

不建議使用以下方式,並使其按順序執行。

def test_login():

...

def test_click_menu():

...

def test_add_goods():

...

建議對公共的步驟進行封裝,可以使用Fixture方法的相互調用來實現步驟漸進,示例如下。

# conftest.py

import pytest

from pages.login_page import LoginPage

from pages.menu_page import MenuPage

from pages.add_goods_page import AddGoodsPage

@pytest.fixture(scope='session')

def login_page(selenium):

return LoginPage(selenium)

@pytest.fixture(scope='session')

def menu_page(selenium, login_page):

"""登錄後返回菜單頁面"""

login_page.login('默認用戶名', '默認密碼') # 也可以從數據文件或環境變量中讀取

return MenuPage(selenium)

@pytest.fixture(scope='session')

def add_goods_page(selenium, menu_page):

"""從MenuPage跳到添加商品頁面"""

menu_page.click_menu('商品管理', '添加新商品')

return AddGoodsPage(selenium)

# test_ecshop.py

def test_login(login_page):

login_page.login('測試用戶名', '測試密碼')

assert login_page.get_login_fail_msg() is None

def test_add_goods(add_goods_page):

聯繫作者longtestyan

Pytest實戰UI測試框架2


分享到:


相關文章: