最初我没有使用unittest
框架,所以为了测试同一个类的两个对象使用运算符<
和>=
无法比较我做了类似的事情:
try:
o1 < o2
assert False
except TypeError:
pass
但之后,我决定开始使用unittest
模块,所以我将测试转换为使用相同模块编写测试的方式。
我试图通过以下方式完成与上述相同的事情:
self.assertRaises(TypeError, o1 < o2)
但这不太有效,因为o1 < o2
尝试调用运算符<
,而不是对函数的引用,该函数应作为测试的一部分调用。
有没有办法在不需要在函数中包装o1 < o2
的情况下完成我需要的工作?
答案 0 :(得分:5)
使用assertRaises
作为上下文管理器:
vendor
Here是对with self.assertRaises(TypeError):
o1 < o2
语句的解释。 Here是文档。 TL; DR:它允许执行带有“上下文”的代码块,即在执行之前/之后设置和处理的事项,错误处理等。
在with
的情况下,它的上下文管理器通过检查传递给其assertRaises
方法的exc
agrument来检查是否已引发所需类型的execption。