pytest的fixture学习十三

模块化:使用fixture函数中的fixtures

除了在测试用例中使用fixtures外,fixture功能还可以自己使用其他fixtures,这有助于fixture的模块化设计,并允许在多个项目中重复使用特定于框架的fixture。作为一个简单的示例,我们可以扩展前面的示例,并实例化一个对象应用程序,将已定义的smtp_connection资源粘贴到该对象应用程序中:

官网示例

示例中,先声明一个app fixture,该fixture接受conftest.py中定义的smtp_connection fixture,并使用它实例化一个app对象,运行后:

示例结果

由于smtp_connection的参数化,该测试用例将在两个不同的app实例和各自的smtp服务器上运行两次。app fixture无需知道smtp_connection参数化,因为pytest将完全分析fixture依赖性图。

请注意,该app fixture具有模块范围,并使用模块范围的smtp_connection fixture。如果将smtp_connection缓存在会话作用域中,则该示例仍然可以工作:fixture可以使用“更广泛”范围的fixtures,但反之则不行:会话作用域的fixture不能以同一含义的方式使用模块作用域的fixture。

你可能感兴趣的:(pytest的fixture学习十三)