DNS 쿼리로 몇 가지 테스트를 수행하는 테스트를 만들려고합니다. 나는 최소한의 테스트를 만들려고, 그 청취 DNS 서버를 발사하고,이 서버 쿼리 트위스트 해결 프로그램을 사용하여 다음과 같은 오류이 시험 결과를 실행시험판 테스트 DNS 쿼리로 인해 원자로가 더러운 상태가됩니다.
from twisted.trial import unittest
from twisted.internet import reactor, defer
from twisted.names import client, dns, error, server
class Tester(unittest.TestCase):
def setUp(self):
self.resolver = client.Resolver(resolv='/etc/resolv.conf')
self.resolver = client.Resolver(servers=[('127.0.0.1', 1025)])
self.factory = server.DNSServerFactory(clients=[self.resolver])
self.protocol = dns.DNSDatagramProtocol(controller=self.factory)
self.port = reactor.listenUDP(1025, self.protocol)
def tearDown(self):
self.port.stopListening()
def test_test(self):
def callback(ignore):
print("Received callback!")
res = client.createResolver(servers=[('127.0.0.1', 1025)], resolvconf='/dev/null', hosts='/dev/null')
d = res.lookupAddress('foobar.com')
d.addCallback(callback)
을 :
[ERROR]
Traceback (most recent call last):
Failure: twisted.trial.util.DirtyReactorAggregateError: Reactor was unclean.
DelayedCalls: (set twisted.internet.base.DelayedCall.debug = True to debug)
<DelayedCall 0x7f44c69042e8 [0.9992678165435791s] called=0 cancelled=0
DNSMixin._clearFailed(<Deferred at 0x7f44c6904358>, 28457)>
<DelayedCall 0x7f44c68f3e10 [59.99872899055481s] called=0 cancelled=0 Resolver.maybeParseConfig()>
test.Tester.test_test
==================================================================
[ERROR]
Traceback (most recent call last):
Failure: twisted.trial.util.DirtyReactorAggregateError: Reactor was
unclean.
Selectables:
<<class 'twisted.names.dns.DNSDatagramProtocol'> on 34529>
test.Tester.test_test
-------------------------------------------------------------------------------
Ran 1 tests in 0.003s
을 따라서 반응기가 test_test의 확인자가 보낸 메시지에서 지워지지 않는 것으로 보입니다.
왜 이런 일이 발생하는지 이해할 수 없습니다. 문서에 따르면 재판을 통해 원자로가 가동되고 만져서는 안된다고합니다. 테스트 프레임 워크를 잘못 사용합니까?