J'essaie de tester ma réponse de messagerie dans une de mes bibliothèques.Test des sockets zmq avec unittest
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)
Mon problème est que lorsque je déclare les méthodes d'essai dans la classe ci-dessus, au lieu d'appeler la fonction setUp
une fois mise une fois l'état, chaque méthode d'essai tente rappelle setUp
pour définir son propre état et l'adresse ont déjà été accroché par la première instance. Comment puis-je contourner les problèmes multi-processus avec la façon dont fonctionne unittest
? Serait-il préférable d'appeler un socket aléatoire à des fins de test?
Si vous ne voulez l'appeler qu'une seule fois, placez-le dans le constructeur sinon le but de setUp est de s'exécuter avant chaque test. – Dan
Haha, ça a beaucoup plus de sens. Mais les tests seront encore en cours, correct? –
Oui, ils fonctionneront toujours en parallèle. – Dan