pytest fixture前置方法接收 用例参数

fixture作为前置方法时,接收参数

1. 参数数量为一个:

@pytest.fixture(scope="class")
def setup_func1(request):
    print(request.param)
    yield request.param
    print("this is end")


@pytest.mark.parametrize("setup_func1", ["xiaoming"], indirect=True)
@pytest.mark.parametrize("course, score", [("math", 100), ("chinese", 89), ("english", 10)])
def test_setup1(setup_func1, course, score):
    name = setup_func1
    print(f"{name}'s {course} score is {score}")

运行结果:

============================= test session starts =============================
collecting ... collected 3 items

test_pytest_firest.py::test_setup[math-100-xiaoming] xiaoming
PASSED              [ 33%]xiaoming's math score is 100
this is end

test_pytest_firest.py::test_setup[chinese-89-xiaoming] xiaoming
PASSED            [ 66%]xiaoming's chinese score is 89
this is end

test_pytest_firest.py::test_setup[english-10-xiaoming] xiaoming
PASSED            [100%]xiaoming's english score is 10
this is end


============================== 3 passed in 0.04s ==============================

Process finished with exit code 0

2. 多个参数时:

@pytest.fixture(scope="class")
def setup_func(request):
    print(request.param[0])
    print(request.param[1])
    yield request.param[0], request.param[1]
    print("this is end")

@pytest.mark.parametrize("setup_func", [("xiaoming", "20230412001"), ("xiaohong", "20230412002")], indirect=True)
@pytest.mark.parametrize("course, score", [("math", 50), ("chinese", 50), ("english", 100)])
def test_setup(setup_func, course, score):
    name, student_id = setup_func
    print(f"{name}'s {course} score is {score}, student_id is {student_id}")

运行结果:

============================= test session starts =============================
collecting ... collected 6 items

test_pytest_firest.py::test_setup[math-50-setup_func0] 
test_pytest_firest.py::test_setup[chinese-50-setup_func0] 
test_pytest_firest.py::test_setup[english-100-setup_func0] 
test_pytest_firest.py::test_setup[math-50-setup_func1] 
test_pytest_firest.py::test_setup[chinese-50-setup_func1] 
test_pytest_firest.py::test_setup[english-100-setup_func1] 

============================== 6 passed in 0.05s ==============================

Process finished with exit code 0
xiaoming
20230412001
PASSED            [ 16%]xiaoming's math score is 50, student_id is 20230412001
this is end
xiaoming
20230412001
PASSED         [ 33%]xiaoming's chinese score is 50, student_id is 20230412001
this is end
xiaoming
20230412001
PASSED        [ 50%]xiaoming's english score is 100, student_id is 20230412001
this is end
xiaohong
20230412002
PASSED            [ 66%]xiaohong's math score is 50, student_id is 20230412002
this is end
xiaohong
20230412002
PASSED         [ 83%]xiaohong's chinese score is 50, student_id is 20230412002
this is end
xiaohong
20230412002
PASSED        [100%]xiaohong's english score is 100, student_id is 20230412002
this is end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值