1、前后置
所谓前后置,就类似unittest
框架中的setup
和teardown
——执行用例前打开浏览器(前置),执行结束关闭浏览器(后置)。例如:
上面代码打印的部分就是setup
、setup_class
、teardown
、teardown_class
每个方法的说明
可是如果还有另一个文件,也需要这些操作【比如ui自动化每个用例都要打开浏览器执行】我们就需要对这几个公用的方法进行一下封装了。注:公用的库,习惯上都会定义为common
我们新建一个名为common
的package
,然后在里面创建common_util
文件,新建类CommonUtil
把公用方法剪切到这个类里面
然后其他类只需要继承这个类即可【python基础知识】
以上就是我们学unittest
时的思路。但是现在如果有新需求:只有一个用例需要前置条件,其余的都不需要。那这个时候该怎么办呢?似乎这种继承的方法就不那么灵活了。
这个时候就引出了fixture
来实现部分前后置
语法:@pytest.fixture()
参数:
scope --作用域
function:函数之前和之后执行
class:类之前和之后执行
package/session:整个项目会话之前和之后执行
autouse --自动执行
默认:False;如果改为True,则不需要调用,在对应的作用域会自动执行
...
先举个通俗的例子:
把CommonUtil
里面的代码注释掉,直接pass,让它不再生效
然后修改测试文件:
执行后就可以看到,只有test_py
方法调用了exe_sql
方法。
加上第二个参数autouse
值为True
,执行就可以看到所有用例都引用了exe_sql
方法
到目前为止,所有都是“之前”执行,“之后”怎么做呢
“之后”要用yield
执行结果:
注:一个文件中可以有多个fixture
,可以按照需要添加多个
但是fixture
这个固件只在当前文件生效,其他文件是不会生效的,如果其他文件要生效就要配置conftest.py
文件了。
而且还有很多其他参数,这些我们明天再说。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:779450660里面有各种软件测试资源和技术讨论)