python - 如何正确使用单元测试的 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这是unittest新特性到python2.6的一个反向移植,你可以使用上面的代码让它工作。

N.B:我非常喜欢 unittest 的新功能(SkipTest、测试发现...),所以我打算尽可能多地使用 unittest2。我建议也这样做,因为在 python2.6 中,unittest 的功能远不止这些 <./>

https://stackoverflow.com/questions/6103825/

相关文章:

python - 如何将 JSON 转换为 CSV?

python - 在 python 中创建线程

python - 如何在 Python 中比较对象的类型?

python - 使用 Python 将 XML 转换为 JSON?

linux - 如何获取 Docker 中依赖的子镜像列表?

linux - 计算特定目录中的目录数

linux - 为什么在 Bash 中应该避免使用 eval,我应该使用什么来代替?

linux - "Failed to load platform plugin "xcb ""在没有

python - 如何用 Python 四舍五入到小数点后两位?

c - 在C中获取终端宽度?