前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >unittest类和普通类,使用时候一定别踩这个坑!

unittest类和普通类,使用时候一定别踩这个坑!

作者头像
我去热饭
发布2022-05-18 21:00:30
1680
发布2022-05-18 21:00:30
举报
文章被收录于专栏:测试开发干货测试开发干货

unittest是python中的一个单元测试框架。

新手容易忽略以下俩个情况

1.classmethod

classmethod经过实测,发现在unittest中可以装饰setUpClass(cls)

且在setUpClass中直接就可以定义类变量,且类变量可以在所有用例方法中调用,注意仅仅是调用

2.用例方法之间是平行宇宙

什么意思?就是test0里面 定义的变量,哪怕定义成类变量。都不能在test1中直接调用。

如:

代码语言:javascript
复制
def test0(self):
  self.b = 5
def test1(self):
  pring self.b

这个运行起来之后,虽然会先执行test0,但是运行到test1时 会报错类变量里根本没有b

这点是和普通类方法截然相反的,普通类方法,是可以输出b=5的

还有,在unittest中的用例方法中,是没办法强行修改在setUpClass中定义的类变量的。就算你改了类变量的值,当这条用例执行结束,其他用例调用类变量时会发现,类变量的值又回到类最初始。这个情况 在你这个用例方法内执行甚至循环执行的时候,类变量都是随意改变叠加的,但是一旦用例执行结束,类变量都会初始化。这点和普通类也是不同的

上面说到循环执行 一个用例方法,什么时候会这样呢?就是比如你写了个失败重跑的装饰器。然后用n来计数。这个n就是类变量,初始值是0

你这个用例每次执行一次,就把类变量自加一。然后进行计数重跑次数。这个时候,类变量是真的会自加。但是这个用例超过最大重跑次数后,无论失败成功。类变量都会回归成0.其他用例再重跑的时候,依然是从0开始计数。

具体如何进行失败重跑。且带setup/teardown 请看我的另一篇文章《unittest 用例报错失败重跑 带setup/teardown》

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

本文分享自 测试开发干货 微信公众号,前往查看

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

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

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