0
SSLTest.testError는 통과하지만 tearDown 이후에 Trial 예외가 발생합니다. 비교를 위해 정상적으로 작동하는 RegularTest.testOk가 있습니다. 나는 이것을 설명하는 트위스티드 버그를 발견하지 못했고, 그래서 이것은 재현하기가 얼마나 쉬운지를 고려할 때 내가 잘못하고있는 것으로 가정합니다. 어떤 아이디어?SSL을 사용한 뒤틀린 시행 오류
여기에 코드입니다 :
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)
사이트에서 기본 프로토콜을 얻는 방법과 지연 프로토콜을 주입하는 방법을 찾지 못했습니다. 실제로이 모든 테스트 전략을 쓸모 없게 만들 수도 있습니다. 어쨌든 링크 주셔서 감사합니다! twisted.web 테스트는 서버를 시작하고 연결하는 것보다 다른 방법을 찾으려고 노력할 것입니다. – tadeas