pytest之conftest.py

背景

本文介绍pytst中极具特色conftest.py文件。

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。
搜索顺序是:

  1. 优先搜索当前测试所在类
  2. 再搜索当前测试所在的模块
  3. 然后搜索conftest.py
  4. 接下来搜索内置fixture
  5. 最后搜索第三方插件

到了这里,相信可以明白conftest.py的作用了。conftest.py就是存放fixture的地方。准确的说,是存放自定义fixture的地方。

conftest.py的作用范围

其作用范围是当前目录包括子目录里的测试模块。
比如在测试系统的根目录创建conftest.py文件,其文件中的fixture的作用范围是所有测试模块。
比如在某个单独的测试文件夹里创建conftest.py文件,该文件中fixture的作用范围就仅局限于该测试文件夹里的测试模块。该测试文件夹外的测试模块或者该测试文件夹外的测试文件夹,是无法调用到这个conftest.py文件中的fixture。
Tips:如果测试根目录和测试子目录都有conftest.py,并且这两个conftest.py中都有一个同名的fixture,测试子目录中的测试用例使用这个命名的fixture,实际生效的是测试子目录下的conftest.py中的fixture。

conftest.py的注意事项

  1. conftest.py是python的模块,但是不能被导入。import conftest操作是非法的。
  2. 建议把测试项目的所有fixture都存放在conftest.py中,把conftest.py当作pytest的fixture仓库。
  3. 如果希望fixture共享给所有测试,则把该fixture放在测试根目录下的conftest.py是最合适的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值