步驟漸進
用例之間不應相互依賴,如果部分用例擁有相同的業務流程,如都需要,打開登錄頁->登錄->點擊添加商品菜單->進入添加商品頁面
不建議使用以下方式,並使其按順序執行。
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