使用SSL的扭曲试验错误
SSLTest.testError通过,但试用版在卸载后引发异常。为了进行比较,RegularTest.testOk可以正常工作。 我还没有发现任何扭曲的bug来解释这一点,所以我假设我做了一些错误的事情,因为这很容易复制。有什么想法吗 代码如下:使用SSL的扭曲试验错误,ssl,twisted,trial,Ssl,Twisted,Trial,SSLTest.testError通过,但试用版在卸载后引发异常。为了进行比较,RegularTest.testOk可以正常工作。 我还没有发现任何扭曲的bug来解释这一点,所以我假设我做了一些错误的事情,因为这很容易复制。有什么想法吗 代码如下: from twisted.web import resource from twisted.internet import ssl, reactor from twisted.web.server import Site from twisted.w
from twisted.web import resource
from twisted.internet import ssl, reactor
from twisted.web.server import Site
from twisted.web.client import Agent, WebClientContextFactory
from twisted.trial.unittest import TestCase
class DummyServer(resource.Resource):
isLeaf = True
def render(self, request):
return 'hello world'
class SSLTest(TestCase):
def setUp(self):
site = Site(DummyServer())
SSLFactory = ssl.DefaultOpenSSLContextFactory('../server.key',
'../server.crt')
port = reactor.listenSSL(0, site, contextFactory=SSLFactory)
self.port = port
self.portNumber = port._realPortNumber
def tearDown(self):
self.port.stopListening()
def testError(self):
def finished(result):
self.assertEquals(result.code, 200)
url = 'https://127.0.0.1:%s' % self.portNumber
agent = Agent(reactor, WebClientContextFactory())
d = agent.request('GET', url)
d.addCallback(finished)
return d
class RegularTest(TestCase):
def setUp(self):
site = Site(DummyServer())
port = reactor.listenTCP(0, site)
self.port = port
self.portNumber = port._realPortNumber
def tearDown(self):
self.port.stopListening()
def testOk(self):
def finished(result):
self.assertEquals(result.code, 200)
url = 'http://127.0.0.1:%s' % self.portNumber
agent = Agent(reactor,)
d = agent.request('GET', url)
d.addCallback(finished)
return d
这是标准:
$ trial trialerror.py
trialerror
RegularTest
testOk ... [OK]
SSLTest
testError ... [OK]
[ERROR]
===============================================================================
[ERROR]
Traceback (most recent call last):
Failure: twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean.
Selectables:
<TLSMemoryBIOProtocol #0 on 51135>
trialerror.SSLTest.testError
-------------------------------------------------------------------------------
Ran 2 tests in 0.018s
FAILED (errors=1, successes=2)
$trialerror.py试用版
审判员
定期测试
测试OK。。。[好的]
SSLTest
测试员。。。[好的]
[错误]
===============================================================================
[错误]
回溯(最近一次呼叫最后一次):
失败:twisted.trial.util.DirtyReactor聚合错误:反应堆不干净。
可选择项:
测试仪错误
-------------------------------------------------------------------------------
在0.018秒内运行了2次测试
失败(错误=1,成功=2)
。您可能还想考虑在单元测试中不使用实际的网络连接。代码>代理已经工作。网站也是如此,
reactor.listenSSL
等。试着编写单元测试来测试代码,而不是从代码所依赖的库中获取大量代码。我还没有找到如何在站点中获取底层协议以及如何注入延迟协议。这实际上可能根本不可能,这使得整个测试策略毫无用处。无论如何,谢谢你的链接!我将尝试找到一种不同的方法来测试twisted.web,而不是启动和连接服务器。