Ale*_*lex 5 python twisted trial
我一直在努力用 deferred 和 deferred 来测试扭曲的代码。
我想,我有一个简单的测试应该会失败。
根据我对 Twisted 的测试工具 Trial 的理解,我应该能够返回一个延迟,当它完成时测试将完成。
这是我的代码花絮,也许有人可以提供帮助。
import unittest, time
from twisted.internet import reactor, defer
class MyTest(unittest.TestCase):
def test_simple_deferred(self):
print "\nStarting Test"
my_deferred = defer.Deferred()
def print_time():
print time.time()
self.assertTrue(False)
my_deferred.addCallback(print_time)
reactor.callLater(3, my_deferred.callback)
print time.time()
return my_deferred
Run Code Online (Sandbox Code Playgroud)
在此先感谢,我已经看了很多例子,但我想我已经达到了我已经研究这个太久的地步。
你有两个问题。
首先,要获得特殊的延迟处理,您的测试用例需要继承自twisted.trial.unittest.TestCase,而不是 Python 标准库版本。
最后,您没有reactor.callLater正确调用,或者更确切地说,您没有为Deferred.callback();提供正确的参数。你需要给 deferred 一个值。如果你不在乎它是什么,给它一个None. 同样,回调需要采用该参数;你可以放心地忽略它。
from twisted.trial import unittest
#^^^^^^^^^^^^^^^^^
import time
from twisted.internet import defer
from twisted.internet import reactor
class MyTest(unittest.TestCase):
def test_simple_deferred(self):
print "\nStarting Test"
my_deferred = defer.Deferred()
def print_time(dont_care):
# ^^^^^^^^^
print time.time()
self.assertTrue(False)
my_deferred.addCallback(print_time)
reactor.callLater(3, my_deferred.callback, None)
# ^^^^^^
print time.time()
return my_deferred
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1598 次 |
| 最近记录: |