gpt4 book ai didi

python - 扭曲的试验在测试之间挂起

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:52 24 4
gpt4 key购买 nike

我对 Twisted 还很陌生,我正在尝试使用试用测试框架编写一些单元测试。我的测试按预期运行并通过,但由于某种原因,试验在测试之间挂起。每次测试后我必须按 CTRL+C 才能使其进入下一个测试。我猜我的配置不正确,或者我没有调用一些我应该告诉试验测试已完成的方法。

这是正在测试的类:

from twisted.internet import reactor, defer
import threading
import time


class SomeClass:
def doSomething(self):
return self.asyncMethod()

def asyncMethod(self):
d = defer.Deferred()
t = SomeThread(d)
t.start()
return d


class SomeThread(threading.Thread):
def __init__(self, d):
super(SomeThread, self).__init__()
self.d = d

def run(self):
time.sleep(2) # pretend to do something
retVal = 123
self.d.callback(retVal)

这是单元测试类:

from twisted.trial import unittest
import tested


class SomeTest(unittest.TestCase):
def testOne(self):
sc = tested.SomeClass()
d = sc.doSomething()
return d.addCallback(self.allDone)

def allDone(self, retVal):
self.assertEquals(retVal, 123)

def testTwo(self):
sc = tested.SomeClass()
d = sc.doSomething()
return d.addCallback(self.allDone2)

def allDone2(self, retVal):
self.assertEquals(retVal, 123)

这是命令行输出的样子:

me$ trial test.py 
test
SomeTest
testOne ... ^C [OK]
testTwo ... ^C [OK]

-------------------------------------------------------------------------------
Ran 2 tests in 8.499s

PASSED (successes=2)

最佳答案

我猜你的问题与你的线程有关。 Twisted 不是线程安全的,如果您需要与线程交互,您应该让 react 器通过使用 deferToThread、callInThread、callFromThread 来处理事情。请参阅here有关如何使用 Twisted 实现线程安全的信息。

关于python - 扭曲的试验在测试之间挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com