【发布时间】:2019-03-03 14:06:25
【问题描述】:
我正在尝试测试一些去抖动逻辑 - 这些是我使用 2.7 运行时环境为 Google App Engine webapp 运行的本地单元测试。我所有的其他测试都进行得很顺利,但这个让我很难过!
def testThat_emailDebouncingWorks(self):
# Do something, it triggers an email.
doSomething()
self.assertEqual(emails_sent, 1)
# Do something again, the new email is debounced.
doSomething()
self.assertEqual(emails_sent, 1)
# After an hour, the emails should start working again...
mockWaitingAnHour()
doSomething()
self.assertEqual(emails_sent, 2)
# ... and so should the debouncing.
doSomething()
self.assertEqual(emails_sent, 2)
正在测试的文件使用 datetime.now() 记录电子邮件的发送时间,然后在以后的所有尝试中重新运行 datetime.now(),如果不到一小时则提前返回。
有两个问题:
我认为 unittest 库仅在 3.X 中添加了模拟支持,我并不热衷于更新我的整个应用程序。
即使我使用的是 3.X,我看到的所有示例都是关于为整个测试用例伪造日期时间响应(使用测试 def 上方的模拟装饰器)。而我想在测试中途改变这种行为,而不是整个案例。
有什么建议吗?提前致谢!
【问题讨论】:
标签: python-unittest