如何正确使用单元测试的 assertRaises() 和 NoneType 对象?[复制]

 

问题描述:

这个问题在这里已经有了答案

如何测试 Python 函数是否引发异常? (19 个回答)

4年前关闭。

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

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 异常?


 

第 1 个答案:

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

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

如果您正在使用
python2.6,除了到目前为止给定的方法之外,另一种方法是使用unittest2,它是
unittest 新功能到 python2.6 的后向端口,您可以使用上面的代码使其工作。

注意:我是 unittest 的新功能(SkipTest,测试发现......)的忠实粉丝,所以我打算尽可能多地使用
unittest2。我建议也这样做,因为在 python2.6 <.


我有一个带有以下列名称的熊猫数据框:结果1,测试1,结果2,测试2,结果3,测试3等…我想删除名称中包含“Test”一词的所有列。此类列的数量不是静态的,而是取决于先前的函 ...