При запуске юнит-тестов я часто получаю error: [Errno 32] Broken pipe
. Кажется, это безобидная ошибка, которая возникает во время тестирования, но я не смог предотвратить или иным образом подавить ее.
Некоторые вещи, которые я пробовал, включают изменение обработки SIGPIPE
на SIG_DFL
и запуск приложения с threaded=True
. Если бы я был try/except
, я не знаю, какой код обернуть, так как это в контексте модульного тестирования.
Меня не волнует отлов/предотвращение ошибки, а просто подавление ее вывода, пока все остальные тесты завершают работу. Что еще я должен попробовать?
Редактировать:
Вот пример кода, который часто, но не всегда приводит к ошибке:
def test_register(self):
self.driver.get(self.get_server_url() + url_for(u'register'))
body = self.driver.find_element_by_id(u'body')
username_input = body.find_element_by_id(u'username')
username_input.send_keys(self.USER1_DISPLAY_USERNAME)
privacy_policy = body.find_element_by_id(u'privacy_policy')
privacy_policy.click()
#NOTE: not shown - more lines filling out form elements exactly like the above lines
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
register_button = body.find_element_by_id(u'onclick-register')
register_button.click()
А вот пример сообщения об ошибке:
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 44668)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 599, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 657, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 716, in finish
self.wfile.close()
File "/usr/lib/python2.7/socket.py", line 283, in close
self.flush()
File "/usr/lib/python2.7/socket.py", line 307, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------
Похоже, это происходит только с интеграционными тестами. Я использую Selenium и LiveServerTestCase
с портом LIVESERVER_PORT
, установленным на 8943
. Упоминание порта 44668
в сообщении об ошибке выглядит подозрительно.
Моя проблема звучит точно так же, как Подавить вывод на печать в модульных тестах, но ни одно из этих решений не работает.