Flask测试中pytest fixture的client参数注入来源疑问
pytest 测试方法中
client参数的注入逻辑 你在测试目录本地的conftest.py中找不到client对应的fixture定义是正常情况,这个fixture并非flask-restx项目自行实现,来自测试依赖的pytest-flask插件内置提供:
- pytest的fixture加载范围并不局限于当前测试目录下的
conftest.py文件,所有已安装且完成注册的pytest插件提供的fixture,都会被pytest自动识别加载,不需要项目在本地重复定义。 pytest-flask是Flask生态专门适配pytest测试框架的配套插件,client是它的核心内置fixture之一:插件会基于项目中已配置的Flask应用实例fixture,自动生成对应的测试客户端对象,本质是对Flask原生app.test_client()的封装,你贴的测试代码里调用的get_specs等测试请求方法,就是这个测试客户端实例提供的能力。- pytest执行测试方法时,会自动按方法的参数名,在全局fixture注册表中匹配同名、作用域符合要求的fixture,完成实例化后自动传入对应参数位置,不需要手动给测试方法传参。
要验证这个fixture的来源,可以在项目的测试虚拟环境中执行命令pytest --fixtures,输出的fixture列表里会明确标注client的定义来源是pytest-flask插件,而非项目本地文件。
内容的提问来源于stack exchange,提问作者jldupont
相关产品推荐
相关产品推荐

