前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest入门 -5-测试用例前后置,固件

pytest入门 -5-测试用例前后置,固件

作者头像
孟船长
发布2022-02-23 16:44:44
2040
发布2022-02-23 16:44:44
举报

1、前后置

所谓前后置,就类似unittest框架中的setupteardown——执行用例前打开浏览器(前置),执行结束关闭浏览器(后置)。例如:

上面代码打印的部分就是setupsetup_classteardownteardown_class每个方法的说明 可是如果还有另一个文件,也需要这些操作【比如ui自动化每个用例都要打开浏览器执行】我们就需要对这几个公用的方法进行一下封装了。注:公用的库,习惯上都会定义为common

我们新建一个名为commonpackage,然后在里面创建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文件了。

而且还有很多其他参数,这些我们明天再说。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档