【背景】每个测试用例生成对应的log文件,需要将测试脚本名称传给log对象,生成对于的log文件
【分析】
方法一:
使用@pytest.mark.parametrize 的 indirect=True ,参数1: 执行对应的函数 (fixtrue 中的函数名称) 参数2: 函数对应的参数
参考:
Pytest系列(10) - fixture 传参数 request的详细使用 - 小菠萝测试笔记 - 博客园 (cnblogs.com)
知识点
- 添加 indirect=True 参数是为了把 login 当成一个函数去执行,而不是一个参数,并且将data当做参数传入函数
- def test_name(login) ,这里的login是获取fixture返回的值
方法二:
使用 fixtrue 内置的 request 参数,
属性
request.fixturename
: 注意,这并不是一个标准的request
属性。通常我们使用request.fixturenames
来获取一个测试函数或方法所依赖的所有 fixture 名称的元组。request.fixturenames
: 一个包含测试函数或方法所依赖的所有 fixture 名称的元组。request.node
: 当前正在执行的节点(例如,一个测试函数或类)。这个对象提供了对测试上下文(例如,测试名称、位置等)的访问。request.module
: 调用 fixture 或测试函数的模块对象。request.fspath
: 包含调用 fixture 或测试函数的文件的路径。request.cls
: 如果测试是一个类方法,那么这个属性将是该类的类对象。否则,为None
。request.instance
: 如果测试是一个实例方法,那么这个属性将是该实例的对象。否则,为None
。request.function
: 正在执行的测试函数。request.config
: 访问 pytest 的配置对象,它允许你查询和修改 pytest 的配置设置。request.session
: 整个测试会话的会话对象。request.keywords
: 一个字典,包含与当前测试相关的所有关键字标记(markers)。request.param
: 如果 fixture 被标记为参数化,这个属性将包含当前参数的值。request.addfinalizer(func)
: 这是一个方法,但经常作为属性来使用(通过装饰器)。它允许你注册一个在测试结束时调用的清理函数。
方法
request.getfixturevalue(argname)
: 获取指定 fixture 的值。这通常在你需要在 fixture 函数内部访问另一个 fixture 的值时很有用。request.getparam(name)
: 获取指定参数化参数的当前值。request.cached_setup(...)
: 这是一个较旧的功能,用于缓存 fixture 的设置值。现在更推荐使用@pytest.fixture(scope=...)
来控制 fixture 的作用域。request.applymarker(marker)
: 在当前节点上应用一个标记。
【结果】
使用request.cls()解决
标签:request,fixture,pytest,测试用例,参数,测试,测试函数,fixtrue From: https://www.cnblogs.com/liu-Gray/p/18188846