本文介绍pytst中极具特色conftest.py文件。
首先弄明白conftest.py文件是什么。
之前的几篇文章,总结pytest的运行规则,mark标记,命令行,断言,都没有用到conftest.py文件。所以,当我们需要使用conftest.py,需要手动创建这个文件。
我们需要联系着pytest的另一大特色fixture来介绍conftest.py。
fixture:
在编程领域中,fixture有不同的含义。
pytest中的fixture的是用于将测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。类似unittest中的setup\teardown机制。但是比之更高级和优雅。并且pytest中也有setup\setdown这种机制,但完全可以被fixture取代。
我们可以在测试用例、测试类、测试会话中使用fixture,使用方法不是本文的主题。
pytest是按照fixture的名称搜索fixture。
搜索顺序是:
到了这里,相信可以明白conftest.py的作用了。conftest.py就是存放fixture的地方。准确的说,是存放自定义fixture的地方。
其作用范围是当前目录包括子目录里的测试模块。
比如在测试系统的根目录创建conftest.py文件,其文件中的fixture的作用范围是所有测试模块。
比如在某个单独的测试文件夹里创建conftest.py文件,该文件中fixture的作用范围就仅局限于该测试文件夹里的测试模块。该测试文件夹外的测试模块或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的fixture。
Tips:如果测试根目录和测试子目录都有conftest.py,并且这两个conftest.py中都有一个同名的fixture,测试子目录中的测试用例使用这个命名的fixture,实际生效的是测试子目录下的conftest.py中的fixture。