当前位置:   article > 正文

@pytest.fixtrue与@pytest.mark.parametrize结合实现参数化_pytest.fixture的变量给pytest.mark.parametrize用

pytest.fixture的变量给pytest.mark.parametrize用

@pytest.fixtrue与@pytest.mark.parametrize结合实现参数化

如果测试数据需要在fixtrue方法中使用 同时也需要在测试用例中使用
可以在使用parametrize 时添加一个参数 indirect=True pytst可以实现将参数传入到fixtrue中,也可以在当前测试用例中使用

当indirect=True pytest会把argnames当做函数去执行
将argvalues作参数传入到argnames这个函数里面


import pytest

test_user_data=["Tome","Jerry"]

@pytest.fixture(scope="module")
def login_r(request):
    #通过request.param 获取参数
    user=request.param
    print(f"登录用户:{user}")
    return user

@pytest.mark.parametrize("login_r",test_user_data,indirect=True)
def test_login(login_r):
    a=login_r
    print(f"测试用例中的返回值为:{a}")
    assert a!=""
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
登录用户:Tome
PASSED                                [ 50%]测试用例中的返回值为:Tome
登录用户:Jerry
PASSED                               [100%]测试用例中的返回值为:Jerry
  • 1
  • 2
  • 3
  • 4

当indirect=True 将login_r作为参数, test_user_data被作为参数传递到login_r 方法中 生成多条用例,通过return将结果返回

当调用login_r时可以获取到longin_r这个方法返回的参数

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/143770
推荐阅读
相关标签
  

闽ICP备14008679号