Python - fixture (二)

fixture 的并列与嵌套调用

常用场景:相互依赖的fixture 可能是多个,或提前准备的数据也可能是多个,或数据准备也可能有依赖或先后

并列使用fixture

@pytest.fixture(scope='module')
def open_brower():
    print('打开浏览器!')



def test_cakan():
    print('case2: 不登录就看')


def test_cart(login):
    print('case3: 登录,加入购物车')


def test_soso(open_brower, login):
    print('case1: 登录后执行搜索')


执行结果:

test_module\test_fixture_twofixtures-1.py case2: 不登录就看
.这是登录模块
case3: 登录,加入购物车
.打开浏览器!
这是登录模块
case1: 登录后执行搜索
.

嵌套调用fixture

import pytest


@pytest.fixture()
def login(open_brower): # 1
    print('这是登录模块')


@pytest.fixture(scope='module')
def open_brower():
    print('打开浏览器!')



def test_cakan():
    print('case2: 不登录就看')


def test_cart(login):  # 2
    print('case3: 登录,加入购物车')


def test_soso(login):
    print('case1: 登录后执行搜索')
  1. 嵌套了 open_brower
  2. 测试用例在使用的时候可以直接使用login,执行login 之前会先调用 open_brower

执行结果:

test_module\test_fixture_twofixtures-1.py case2: 不登录就看
.打开浏览器!
这是登录模块
case3: 登录,加入购物车
.这是登录模块
case1: 登录后执行搜索
.

嵌套调用获取 fixture 返回值

@pytest.fixture()
def login(open_brower): 
    print(f'open_brower 返回值:{open_brower}')
    print('这是登录模块')


@pytest.fixture(scope='module')
def open_brower():
    print('打开浏览器!')
    return 1

def test_soso(login):
    print('case1: 登录后执行搜索')

执行结果:

test_module\test_fixture_twofixtures-1.py 打开浏览器!
open_brower 返回值:1
这是登录模块
case1: 登录后执行搜索
.
posted @ 2024-06-25 21:00  chuangzhou  阅读(2)  评论(0编辑  收藏  举报