下面的代码失败,因为所需的基类 twisted.trial.unittest.TestCase 不是基类。
from twisted.trial import unittest
from unittest import TestCase
import myapp
class Feature(TestCase):
def setUp(self):
self.callbackCounter = 0
def checkCbCalled(self, expected):
self.assertEqual(self.callbackCounter, expected)
def testTrialCallsDeferred(self):
d = myapp.buildFeature()
self.addCleanup(self.checkCbCalled, expected=1)
def cb(res):
self.callbackCounter += 1
d.addCallback(cb).addErrback(self.fail)
return d # does not fire because of 'import rules'?
如果我说过
from twisted.trial import unittest as trialut
from trialut import TestCase
或更好:
from twisted.trial.unittest import TestCase
然后测试将按预期运行,并且 trial.unittest.TestCase 会解雇我的延期。
这看起来好像本地最近导入的东西应该已经取代了 {lib/pythonX.X/unittest} 中可用的东西。我知道它必须是基于 sys.path 或其他隐式或显式的规则。这让我绊倒了太久,因为我没有调用 addCleanup 并且所有测试都通过了,因为返回的延迟实例没有被触发。
我违反了一些规则,请提供一些阅读或其他建议。
谢谢迈克