步骤渐进
用例之间不应相互依赖,如果部分用例拥有相同的业务流程,如都需要,打开登录页->登录->点击添加商品菜单->进入添加商品页面
不建议使用以下方式,并使其按顺序执行。
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
![488a36b0807a059202306dda47365350.png](https://i-blog.csdnimg.cn/blog_migrate/dc6f6fda3af7fa37971abec84a02edad.jpeg)