nbr*_*bro 2 python unit-testing exception python-3.x python-unittest
最初我没有使用unittest框架,所以要测试同一个类的两个对象使用运算符是不可比的<,>=我做了类似的事情:
try:
o1 < o2
assert False
except TypeError:
pass
Run Code Online (Sandbox Code Playgroud)
之后,我决定开始使用该unittest模块,因此我将测试转换为使用相同模块编写测试的方式.
我试图通过以下方式完成与上述相同的事情:
self.assertRaises(TypeError, o1 < o2)
Run Code Online (Sandbox Code Playgroud)
但这并不是很有效,因为它o1 < o2试图调用运算符<,而不是对函数的引用,这应该作为测试的一部分调用.
有没有办法在不需要o1 < o2包含函数的情况下完成我需要的东西?
使用assertRaises的上下文管理器:
with self.assertRaises(TypeError):
o1 < o2
Run Code Online (Sandbox Code Playgroud)
以下是对该with陈述的解释.这是文档.TL; DR:它允许执行带有"上下文"的代码块,即在执行之前/之后设置和处理的事情,错误处理等.
在这种情况下assertRaises,它的上下文管理器通过检查exc传递给它的__exit__方法的agrument来检查是否已经引发了所需类型的execption .
| 归档时间: |
|
| 查看次数: |
378 次 |
| 最近记录: |