Я пишу модуль Python, который обертывает определенный API веб-сервисов. Все это REST, поэтому относительно просто реализовать.
Однако я обнаружил проблему, когда дело доходит до модульного тестирования: поскольку я не запускаю службы, для которых я создал этот модуль, я не хочу их забивать, но в то же время мне нужно получить данные для выполнения моих тестов. Я посмотрел на SimpleHTTPServer, и все будет в порядке.
Я решил часть проблемы, которую я имел, но теперь, поскольку я не могу прекратить поток, я получаю проблемы с "адресом, который уже используется" при запуске тестового приложения более одного раза.
Вот пример кода
PORT = 8001
handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), handler)
httpd_thread = threading.Thread(target=httpd.serve_forever)
httpd_thread.setDaemon(True)
httpd_thread.start()
api_data = urllib.urlopen("http://localhost:8001/post/index.json")
print "Data start:"
print json.load(api_data)
Где "index.json" - это mock файл JSON, который я создал, который заменяет реальную вещь. Как я могу чистить вещи изящно после завершения программы?