扭曲的守护进程单元测试

时间:2010-11-09 16:35:46

标签: python twisted daemon

我已经开始使用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)

单元测试的生产和标准流程是否可以实现守护程序实现?

1 个答案:

答案 0 :(得分:1)

  

单元测试的生产和标准流程是否可以实现守护程序实现?

您的单元测试不适用于Twisted的守护程序功能。它适用于自定义应用程序/协议/服务器/您实现的任何功能。通常,在单元测试中,您希望尽可能包含 little 代码。所以一般来说,让你的单元测试 daemonize非常好,甚至更好。实际上,您可能希望编写一些甚至不在真实TCP端口上侦听的单元测试,而只是在服务,工厂和协议类上调用方法。