这里有一个从一些PyTest单元测试中截取的例子,这些测试永远不会退出.如果我在DataListener.__init__
上插入一个断点,我会看到它被test_Control.py
中的from controller import Controller
语句调用,这对我来说有点奇怪;为什么从模块导入一个类会实例化它的一个实例?
Date_listener.py
class DataListener:
def __init__(self, port, host='localhost'):
self._stop_monitor = Event()
self._monitor = Thread(target=self.check_last_message)
self._monitor.start()
def __del__(self):
self.stop()
def stop(self):
self._stop_monitor.set()
self._monitor.join()
def check_last_message(self):
while not self._stop_monitor.is_set():
# Code to check for a heartbeat here
pass
Control.py
from data_listener import DataListener
class Controller:
def __init__(
self,
subscriber=DataListener(port=DEFAULT_SUBSCRIBER_PORT),
publisher=JsonPublisher(DEFAULT_PUBLISHER_PORT)):
pass
test_Control.py
from controller import Controller
def test_controller_work_loop():
# ARRANGE
controller = Controller(subscriber=None, publisher=None)
# Some actual tests here
# This test passes and finishes but the test suite never exits