pytest学习文档07----内置fixture之request
request是pytest的内置fixture,“为请求对象提供对请求测试上下文的访问权,并且在fixture被间接参数化的情况下具有可选的“params”属性”。
这是官方文档对request的描述,可参考的文档不多。
参数:
--fixturename = None: 正在执行此 request 的 Fixtures。
--scope = None: 范围字符串,“方法”,“类”,“模块”,“会话”之一。
--fixturenames: 此 request 中所有活动 Fixture 方法的名称。
--node: 底层集合节点(取决于当前 request 范围)。
--config: 与此 request 关联的 pytest 配置对象。
--function: 如果 request 具有按方法范围,则测试函数对象。
--cls: 收集测试函数的 class(可以是None)。
--instance: 收集测试函数的实例(可以是None)。
--module: 收集测试函数的 python 模块对象。
--fspath: 收集此测试的测试模块的文件系统路径。
--keywords: 底层节点的关键字/标记字典。
--session: pytest 会话对象。
--addfinalizer(finalizer): 在 request 测试上下文完成执行的最后一次测试之后添加要调用的终结器/拆卸函数。
--applymarker(marker): 将标记应用于单个测试函数调用。如果你不希望在所有函数调用中都有关键字/标记,则此方法很有用。
fixture函数可以通过接受request对象来反向获取请求中的测试函数、类、或者模块的上下文
request.module属性 从测试模块中获取module name值。
# !/usr/bin/env python # -*-coding:utf-8 -*- """ # File : test_fixtuer_request.py # Time :2021/11/18 21:47 # Author :author Kong_hua_sheng_25304 # version :python 3.8 # Description: """ import pytest @pytest.fixture(scope='module',autouse=True) def login(request): print("in fixture setup *******") module_name = request.module print("module name = %s"%module_name) yield def finish_func(): print("finalizer finish_function") request.addfinalizer(finish_func) def test_s1(): print("test_s1") def test_s2(): print("test_s2") if __name__ == '__main__': pytest.main(['-s','-v'])
执行结果: