1

私たちのPythonコードベースはnoseを使用してすべての単体テストを実行し、nose.twistedtoolsを使用してすべてのテストを実行しようとしていますが、すべてシャットダウン時にハングしています。これをまっすぐにする助けは素晴らしいでしょう。ハングする簡単なテストは次のとおりです。

from nose.twistedtools import deferred
from twisted.internet.defer import Deferred

@deferred(timeout=1)
def test_rudimentary():
    def done(_ignored):
        print "DONE"

    defer = Deferred()
    defer.addCallback(done)
    return defer

呼び出しと出力は次のようになります。

$ nosetests test_simple.py 
F
======================================================================
FAIL: test_simple.test_rudimentary
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/<ENV>/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/<ENV>/lib/python2.7/site-packages/nose/twistedtools.py", line 165, in wrapper
    % timeout)
TimeExpired: timeout expired before end of test (1.000000 s.)

----------------------------------------------------------------------
Ran 1 test in 1.001s

FAILED (failures=1)

タイムアウトを設定しないと、テストが永久にハングします。

4

1 に答える 1

2

あなたのコードは defer.callback/errback を呼び出す責任があります (おそらく間接的に)。試す:

reactor.callLater(0.1, defer.callback)
return defer
于 2012-10-09T21:02:18.207 に答える