我已经开始使用Twisted工作的客户端/服务器项目(我是新手,所以经验不多)。我可能确实设置了错误的方式/顺序,因为现在我有点困在一个守护进程服务器(使用twistd --python启动它)。
我想知道我是否要重新实现服务器作为在我的unittest模块中使用它的标准流程?
以下是在服务器模块中将服务器作为守护程序启动的代码的一部分(您可能会认识到krondo部分文章中的部分内容):
class TwistedHawkService(service.Service):
def startService(self):
''''''
service.Service.startService(self)
log.msg('TwistedHawkService running ...')
# Configuration
port = 10000
iface = 'localhost'
topService = service.MultiService()
thService = TwistedHawkService()
thService.setServiceParent(topService)
factory = ReceiverFactory(thService)
tcpService = internet.TCPServer(port, factory, interface=iface)
tcpService.setServiceParent(topService)
application = service.Application("TwistedHawkService")
topService.setServiceParent(application)
我尝试在setUp方法中复制/粘贴配置部分:
from mfxTwistedHawk.client import mfxTHClient
from mfxTwistedHawk.server import mfxTHServer
class RequestTestCase(TestCase):
def setUp(self):
# Configuration
port = 10000
iface = 'localhost'
self.topService = service.MultiService()
thService = mfxTHServer.TwistedHawkService()
thService.setServiceParent(self.topService)
factory = mfxTHServer.ReceiverFactory(thService)
tcpService = internet.TCPServer(port, factory, interface=iface)
tcpService.setServiceParent(self.topService)
application = service.Application("TwistedHawkService")
self.topService.setServiceParent(application)
def test_connection(self):
mfxTHClient.requestMain('someRequest')
...但当然使用 trial unittest.py 并不会启动守护程序,因此我的客户无法访问它。
任何有关如何设置事物的建议都将受到赞赏。
谢谢!
修改 管理使一切都适用于此this,但仍然不确定整个事情:
def setUp(self):
# Configuration
port = 10000
iface = 'localhost'
service = mfxTHServer.TwistedHawkService()
factory = mfxTHServer.ReceiverFactory(service)
self.server = reactor.listenTCP(port, factory, interface=iface)
单元测试的生产和标准流程是否可以实现守护程序实现?
答案 0 :(得分:1)
单元测试的生产和标准流程是否可以实现守护程序实现?
您的单元测试不适用于Twisted的守护程序功能。它适用于自定义应用程序/协议/服务器/您实现的任何功能。通常,在单元测试中,您希望尽可能包含 little 代码。所以一般来说,让你的单元测试不 daemonize非常好,甚至更好。实际上,您可能希望编写一些甚至不在真实TCP端口上侦听的单元测试,而只是在服务,工厂和协议类上调用方法。