使用类、模块或项目的fixture
有时测试用例不需要直接访问一个fixture对象,比如,测试可能需要将一个空目录作为当前工作目录来操作,但其他方面并不关心具体目录。这就可以使用标准tempfile和pytest fixtures来实现,我们分离fixture的创建到confest.py文件中:
![](https://img.haomeiwen.com/i4794409/3c234fea8b3b2f58.png)
通过usefixtures标记在测试模块中声明其使用:
![](https://img.haomeiwen.com/i4794409/9569442ad815d66e.png)
因为使用了usefixtures标记,因此执行时每个测试方法都需要cleandir fixture,就像为每个测试方法指定了一个“cleandir”函数参数一样。运行后的结果:
![](https://img.haomeiwen.com/i4794409/ce8fe503886ade33.png)
可以指定多个fixtures:
![](https://img.haomeiwen.com/i4794409/1f60e25e254f4d28.png)
可以使用pytestmark在测试模块级别指定fixture的使用:
![](https://img.haomeiwen.com/i4794409/1be967f4a8e2ea5b.png)
也可以将项目中所有测试所需的fixtures放入ini文件中:
![](https://img.haomeiwen.com/i4794409/365d48977945f3b3.png)
注意:
该方法不适用于fixture function。比如,下面示例将不会按照期望的来工作:
![](https://img.haomeiwen.com/i4794409/190378e812c50301.png)
当前,这种方式不会产生任何错误或警告,但是后期将会改进https://github.com/pytest-dev/pytest/issues/3664
网友评论