2016-07-14 10 views
0

내 라이브러리에서 메시징 응답을 테스트하려고합니다.unittest로 zmq 소켓 테스트

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

한 번만 호출 한 다음 생성자에 넣기를 원하면 setUp의 목적은 각 테스트 전에 실행하는 것입니다. – Dan

+0

하하, 그건 훨씬 더 의미가 있습니다. 그러나 테스트는 여전히 동시에 실행됩니다. 맞습니까? –

+0

예 그들은 항상 병렬로 실행됩니다. – Dan

답변

0

클래스 생성자 __init__(self)에서 zermq 소켓 생성을 수행해야하며, 이는 한 번 호출됩니다. setUp()은 모든 테스트를 수행하기 전에 수행해야하는 작업을위한 것입니다.