如何正确使用单元测试的assertRaises()与NoneType对象?

问题:

我做了一个简单的测试用例:

def setUp(self):

  self.testListNone = None

def testListSlicing(self):

  self.assertRaises(TypeError, self.testListNone[:1])

我期待测试通过,但我有异常:

Traceback (most recent call last):

    self.assertRaises(TypeError, self.testListNone[:1])

TypeError: 'NoneType' object is unsubscriptable

 我以为assertRaises将会传递,因为TypeError异常会
被抚养

回答:

如果您使用python2.7或更高版本,您可以使用assertRaises作为上下文管理器的功能:

with self.assertRaises(TypeError):
    self.testListNone[:1]

如果你使用python2.6,除了现在之外,另外一种方法是使用unittest2这是python2.6的unittest新功能的后端口,你可以使用上面的代码来使其工作。
N.B:我是单元测试的新功能(SkipTest,测试发现…)的粉丝,所以我打算尽可能多地使用unittest2。我建议做同样的事情,因为python2.6中有更多的单元测试。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to properly use unit-testing’s assertRaises() with NoneType objects?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

7 + 3 =