最初我没有使用unittest
框架,因此要使用运算符 <
来测试同一类的两个对象是否不可比较。和>=
我做了类似的事情:
try:
o1 < o2
assert False
except TypeError:
pass
但在那之后,我决定开始使用 unittest
模块,因此我将测试转换为使用同一模块编写测试的方式。
我试图通过以下方式完成与上面相同的事情:
self.assertRaises(TypeError, o1 < o2)
但这不太有效,因为 o1 < o2
尝试调用接线员<
,而不是对函数的引用,函数应该作为测试的一部分被调用。
有没有一种方法可以完成我所需要的而不需要包装 o1 < o2
在函数中?
最佳答案
使用assertRaises
作为上下文管理器:
with self.assertRaises(TypeError):
o1 < o2
Here是 with
语句的解释。 Here是文档。 TL;DR:它允许执行具有“上下文”的代码块,即在执行之前/之后要设置和处理的内容、错误处理等。
在 assertRaises
的情况下,其上下文管理器只是通过检查传递给其 的
方法。exc
参数来检查是否已引发所需类型的执行。 __exit__
关于python - 如何断言运算符 < 和 >= 未实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39224762/