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']) 

执行结果:

 

posted @ 2021-11-18 21:54  GalaxyStar  阅读(155)  评论(0编辑  收藏  举报