如何断言运算符<和> =没有实现?

时间:2016-08-30 10:17:08

标签: python unit-testing python-3.x exception python-unittest

最初我没有使用unittest框架,所以为了测试同一个类的两个对象使用运算符<>=无法比较我做了类似的事情:

try:
    o1 < o2
    assert False
except TypeError:
    pass
但之后,我决定开始使用unittest模块,所以我将测试转换为使用相同模块编写测试的方式。

我试图通过以下方式完成与上述相同的事情:

self.assertRaises(TypeError, o1 < o2)

但这不太有效,因为o1 < o2尝试调用运算符<,而不是对函数的引用,该函数应作为测试的一部分调用。

有没有办法在不需要在函数中包装o1 < o2的情况下完成我需要的工作?

1 个答案:

答案 0 :(得分:5)

使用assertRaises作为上下文管理器:

vendor

Here是对with self.assertRaises(TypeError): o1 < o2 语句的解释。 Here是文档。 TL; DR:它允许执行带有“上下文”的代码块,即在执行之前/之后设置和处理的事项,错误处理等。

with的情况下,它的上下文管理器通过检查传递给其assertRaises方法的exc agrument来检查是否已引发所需类型的execption。