pytest -fixture-request

发布时间 2023-06-09 20:13:52作者: Tarzen

request在pytest-fixture经常使用到,具体看看有什么内容:

# conftest.py
import pytest

@pytest.fixture(params=['环境1','环境2'])
def fixture1(request):
    print(request.param)  # 获取当前fixture的参数化,前提是有params参数,如果没有就会报错
    print(request.module)  # 获取当前调用fixture的脚本,就是py文件
    print(getattr(request.module,'test_0011','001'))  # 可以判断当前py文件中有什么属性
    print(request.node)  # 获取当前执行的用例
    marker = request.node.get_closest_marker('mymark')  # 获取当前用例是否有标记mark=mymark,获取不到返回为None
    if marker is None:
        data = None
    else:
        print(marker.name)  # 打印当前用例的标记name
        print(marker.args)  # 获取标记的参数,返回的是元祖
        data = marker.args[0]  # 获取标记的参数
    return data

自动化用例


import pytest

@pytest.mark.mymark(10,'par2')
def test_001(fixture1):
    print('执行测试用例=========')
    assert fixture1 == 10

@pytest.mark.mymark2(10)
@pytest.mark.parametrize('name,pw',[('tarzan1','pw1'),('tarzan2','pw2')])
def test_002(name,pw,fixture1):
    print(name)
    print(pw)
    print('执行测试用例=========')
    assert fixture1 == 10

  • test_002他本身是参数化的,fixture也是参数化的,执行顺序fixture参数1 -> 用例参数1 -> 用例参数2 -> fixture参数2 -> ...一共执行4次

  • 注意不要和requests库搞混了