以下のコードは、目的の基底クラスである 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 は私の deferred を起動します。
これは、最近ローカルにインポートされたものが {lib/pythonX.X/unittest} で利用可能なものに取って代わったようです。sys.path またはその他の暗黙的または明示的なルールに基づくルールでなければならないことを理解しています。addCleanup への呼び出しがなく、返された遅延インスタンスが起動されなかったため、すべてのテストに合格していたため、これは少し長い間つまずきました。
いくつかのルールを破りました。読み方などをアドバイスしてください。
ありがとうマイク