python - 如何断言运算符 < 和 >= 未实现?

标签 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在函数中?

最佳答案

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

with self.assertRaises(TypeError):
    o1 < o2

Herewith 语句的解释。 Here是文档。 TL;DR:它允许执行具有“上下文”的代码块,即在执行之前/之后要设置和处理的内容、错误处理等。

assertRaises 的情况下,其上下文管理器只是通过检查传递给其 exc 参数来检查是否已引发所需类型的执行。 __exit__ 方法。

关于python - 如何断言运算符 < 和 >= 未实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39224762/

相关文章:

ios - 我应该重构以便能够在 XCTests 中使用模拟吗?

java - 使用 Mockito 根据调用时间更改模拟对象行为?

python - 无法将 Epoch 值转换为人类可读的日期格式 python

python - 线程在加入时卡住

unit-testing - 如何保证所有单元测试在提交之前通过?

python-3.x - 在 Python + Selenium + Firefox WebDriver 上配置代理

python - Pygame 碰撞检测失败

python - if __name__ == '__main__' : statement 下写很多代码是不是很常见

python - Scrapy - 抓取取所有元素而不是 1 项

python - 重新打开窗口抛出 Gtk-CRITICAL ** : gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed