【pytest】将测试用例内的数据回填给fixtrue 中
【背景】每个测试用例生成对应的log文件,需要将测试脚本名称传给log对象,生成对于的log文件
【分析】
方法一:
使用
知识点
- 添加 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()解决
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!