Saat menjalankan unittests saya sering mendapatkan error: [Errno 32] Broken pipe
. Tampaknya ini adalah kesalahan tidak berbahaya yang terjadi selama pengujian, namun saya belum dapat mencegah atau menekannya.
Beberapa hal yang saya coba termasuk mengubah penanganan SIGPIPE
menjadi SIG_DFL
dan menjalankan aplikasi dengan threaded=True
. Jika saya ke try/except
saya tidak tahu kode mana yang harus dibungkus karena ini dalam konteks pengujian unit.
Saya tidak peduli untuk menangkap/mencegah kesalahan, saya hanya menekan keluarannya sementara semua pengujian lainnya selesai berjalan. Apa lagi yang harus saya coba?
Sunting:
Berikut beberapa contoh kode yang sering, namun tidak selalu menghasilkan error:
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()
Dan berikut contoh pesan errornya:
----------------------------------------
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
----------------------------------------
Hal ini tampaknya hanya terjadi dengan tes integrasi. Saya menggunakan Selenium dan LiveServerTestCase
dengan port LIVESERVER_PORT
disetel ke 8943
. Penyebutan port 44668
dalam pesan kesalahan terlihat mencurigakan.
Masalah saya terdengar persis seperti Menekan keluaran cetak di unittests tetapi tidak ada solusi yang berhasil.