Apakah ada cara untuk menyembunyikan peringatan deprecation internal pytest?
Konteks: Saya ingin mengevaluasi kesulitan porting test suite dari nose
ke pytest
. Rangkaian ini cukup besar dan banyak generator pengujian berbasis nose
gaya penggunaan yield
.
Saya ingin terlebih dahulu memastikan pengujian yang ada lolos dengan pytest, dan mungkin mengubah generator pengujian menjadi parameterized
.
Hanya berjalan $ pytest path-to-test-folder
dengan pytest 3.0.4 sepenuhnya didominasi oleh halaman dan halaman
WC1 ~repos/numpy/numpy/lib/tests/test_twodim_base.py yield tests are deprecated, and scheduled to be removed in pytest 4.0
Apakah ada cara untuk mematikan peringatan ini?
pytest -p no:warnings
, atau tambahkan berikut ini ke pytest.ini atau tox.ini Anda:Hasilnya akan menjadi hijau tanpa indikasi peringatan. Lihat dokumentasi di https://docs.pytest.org/en/latest/warnings.html#disabling-warnings-summary .
Ini bisa menjadi kasus penggunaan yang valid untuk rangkaian pengujian di mana Anda menginginkan keluaran yang bersih.
Ketahuilah bahwa selalu menyembunyikan semua peringatan dapat menyebabkan Anda melewatkan peringatan penting. Jika Anda hanya ingin menyembunyikan peringatan tertentu, lihat jawaban Cloc .
sumber
addopts = -p no:warnings
SANGAT BURUK, dan solusi CloC jauh lebih waras, tetapi saya harus menggunakan milik Anda ketikaignore::InsecureRequestWarning
tidak dikenali, jadi Anda juga mendapatkan +1Saya pikir Anda tidak ingin menyembunyikan semua peringatan, tetapi hanya yang tidak relevan. Dan dalam hal ini, peringatan depreksi dari modul python yang diimpor.
Membaca dokumentasi pytest tentang Warnings Capture :
Jadi Anda bisa memfilter peringatan dengan
-W
opsi python !Tampaknya itu
pytest
benar - benar menghapus filter, karena itu menunjukkan semua ituDeprecationWarning
saat berjalan, dan dokumentasi Python tentang Filter Peringatan Default dengan jelas mengatakan:Jadi dalam kasus Anda, jika Anda ingin mengatakan untuk memfilter jenis peringatan yang ingin Anda abaikan, seperti itu
DeprecationWarning
, jalankan saja perintah pytest dengan-W
opsi:EDIT : Dari komentar colini , dimungkinkan untuk memfilter berdasarkan modul. Contoh untuk mengabaikan peringatan penghentian dari semua sqlalchemy:
Anda kemudian dapat membuat daftar modul yang Anda instal yang menghasilkan terlalu banyak noise pada output
pytest
Gunakan dengan file daripada di baris perintah:
Anda mungkin lebih suka mencantumkan filter tersebut di file pytest.ini:
sumber
ignore::DeprecationWarning:sqlalchemy.*:
Di file pytest.ini Anda dapat menambahkan:
ATAU lewat di bawah baris di baris perintah. Ini mungkin berguna jika rangkaian pengujian Anda menangani peringatan menggunakan sistem eksternal.
ATAU jika Anda hanya ingin menyembunyikan beberapa peringatan tertentu yang tidak berlaku lagi, tambahkan pernyataan di bawah ini di file pytest.ini Anda
[pytest] filterwarnings = ignore:.*U.*mode is deprecated:DeprecationWarning
Ini akan mengabaikan semua peringatan tipe DeprecationWarning di mana awal pesan cocok dengan ekspresi reguler ". * U. * mode deprecated".
ATAU Meskipun tidak disarankan, Anda dapat menggunakan
opsi baris perintah untuk menyembunyikan ringkasan peringatan sepenuhnya dari keluaran uji coba.
sumber
Saya tidak ingin menyembunyikan semua peringatan, jadi saya memasukkan ini
pytest.ini
sumber