Я хочу проверить, сможет ли мой код загружать файлы с URL-адресов, поэтому я хочу запустить простой HTTP-сервер внутри моего интеграционного теста, чтобы я мог протестировать утилиту. Я использую
async def runServer(self):
'''
Run an HTTP server to listen to requests and send issuesFromCSV.csv as a response to requests.
'''
outerClassSelf = self
class ThreadingHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
pass
class Handler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
# Construct a server response.
self.send_response(200)
self.send_header('Content-Disposition', 'attachment; filename.csv')
self.send_header('Content-type', 'text/csv')
self.end_headers()
with open(outerClassSelf.filePath, 'r') as file:
self.wfile.write(file.read().encode())
return
print('Server listening on port {}...'.format(self.port))
httpd = await ThreadingHTTPServer(('', self.port), Handler)
httpd.serve_forever()
для запуска сервера. Но когда я не использую ключевые слова async
и await
, сервер блокирует программу и застревает там. Когда я хочу запустить новый поток для сервера и просто вызвать его непосредственно в коде, мой тест отправляет запрос на сервер, прежде чем он запустится, и я получил ошибку. Итак, я хотел использовать await
перед вызовом self.runServer()
, чтобы мой тест ожидал запуска сервера, но для этого потребовалось указать ключевое слово async
в сигнатуре моей тестовой функции, из-за чего python сделал Не рассматривайте эту функцию как тестовую и пропустите ее. Я использую библиотеку unittest
для тестирования. Помогите мне, пожалуйста.