使用unittest测试zmq套接字

时间:2016-07-14 22:48:57

标签: python zeromq python-unittest pyzmq

我正在尝试在我的一个库中测试我的消息响应。

import unittest
from time import sleep

import zmq
from vexbot.messaging import Messaging


class TestMessaging(unittest.TestCase):
    def setUp(self):
        self.subscribe_address = 'tcp://127.0.0.1:4006'
        self.publish_address = 'tcp://127.0.0.1:4007'
        self.settings = {'subscribe_address': self.subscribe_address,
                         'publish_address': self.publish_address}

        context = zmq.Context()
        self.messaging = Messaging(self.settings, context)

        self.test_publish_socket = context.socket(zmq.PUB)
        self.test_publish_socket.connect(self.publish_address)

        self.test_subscribe_socket = context.socket(zmq.SUB)
        self.test_subscribe_socket.connect(self.subscribe_address)
        self.test_subscribe_socket.setsockopt_string(zmq.SUBSCRIBE, '')
        sleep(1)

我的问题是,当我在上面的类中声明测试方法时,不是一次调用setUp函数并将状态设置一次,而是每个测试方法都会调用setUp来设置它自己的状态,该地址已被第一个实例阻止。

如何以unittest运行的方式解决多进程问题?为了测试目的而调用随机套接字会更好吗?

1 个答案:

答案 0 :(得分:0)

您应该在类构造函数__init__(self)中执行zermq套接字创建,该构造函数将被调用一次。 setUp()用于在每次测试之前完成的事情。