Python 用unittest测试zmq插座

Python 用unittest测试zmq插座,python,zeromq,python-unittest,pyzmq,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

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

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
的操作方式来解决多进程问题?出于测试目的调用随机套接字是否更好?

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

您应该在类构造函数
\uuuu init\uuuu(self)
中执行zermq套接字创建,该类构造函数将被调用一次
setUp()
用于在每次测试之前应该执行的操作。

如果您只希望调用一次,请将其放入构造函数中,否则设置的目的是在每次测试之前运行。哈哈,这更有意义。但是测试仍然会同时运行,对吗?是的,它们总是并行运行。如果你只想调用一次,那么把它放在构造函数中,否则安装的目的是在每次测试之前运行。哈哈,这更有意义。但是测试仍然会同时运行,对吗?是的,它们总是并行运行。