Python 有人能解释一下这个扭曲的单元测试吗?

Python 有人能解释一下这个扭曲的单元测试吗?,python,twisted.web,Python,Twisted.web,我只是继承了一些关于TwistedPython的单元测试,如下所示 虽然测试有效,但我在概念上不理解它 给出下面的例子,有人能解释一下吗 为什么这个单元测试“返回页” 为什么没有任何对reactor.start()的调用 关于这个方法的优点和缺点,还有其他我可以考虑的吗? 为什么这个单元测试“返回页” 嗯,不太干净。Twisted的试用单元测试预期结果为延迟,断言为回调。这里的回调是printResult,因此对于任何非空字符串,它都将被计算为true。我认为更恰当的做法应该是: page

我只是继承了一些关于TwistedPython的单元测试,如下所示

虽然测试有效,但我在概念上不理解它

给出下面的例子,有人能解释一下吗

  • 为什么这个单元测试“返回页”
  • 为什么没有任何对reactor.start()的调用
  • 关于这个方法的优点和缺点,还有其他我可以考虑的吗?

为什么这个单元测试“返回页”

嗯,不太干净。Twisted的试用单元测试预期结果为延迟,断言为回调。这里的回调是
printResult
,因此对于任何非空字符串,它都将被计算为true。我认为更恰当的做法应该是:

page = getPage(url, method='POST').addCallback(self.assertTrue)

为什么没有任何对reactor.start()的调用

因为
TestCase
类会处理这个问题。而且它也没有使用标准反应堆

由于单元测试避免了真实的I/O和实时性,它们通常可以 避免使用真正的反应堆。唯一的例外是单元测试 对于真正的反应堆实现。协议的单元测试 实现或其他应用程序代码不应使用反应器。 实际反应堆实施的单元测试不应使用全局 反应堆,但应改为使用 twisted.internet.test.reactormixins.ReactorBuilder,以便 自动应用于所有反应堆实施。没有 如果新的单元测试使用全局反应堆,则为case

page = getPage(url, method='POST').addCallback(self.assertTrue)
page = getPage(url, method='POST').addCallback(self.assertIsNotNone)