Saya menggunakan pytest untuk rangkaian pengujian saya. Saat menemukan bug dalam pengujian antar-komponen yang kompleks, saya ingin menempatkannya import ipdb; ipdb.set_trace()
di tengah kode agar saya dapat men-debugnya.
Namun, karena pytest menjebak sys.stdin / sys.stdout ipdb gagal. Bagaimana saya bisa menggunakan ipdb saat menguji dengan pytest.
Saya tidak tertarik untuk beralih ke pdb atau ipdb setelah kegagalan, tetapi untuk menempatkan jeda di mana saja dalam kode dan dapat men-debugnya di sana sebelum kegagalan terjadi.
addopts = -s
kepytest.ini
file.pytest-ipdb sayangnya tidak didukung lagi.
Solusinya adalah lari
pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
Dari perintah bantuan:
Perbedaannya hanya TerminalPdb tampaknya membuat kesalahan, tetapi Pdb tidak ( dokumen Ipython ).
sumber
TerminalPdb
berfungsi kembali dan solusi yang disukai karena akan memberi Anda penyelesaian tab.Ini yang saya gunakan
py.test tests/ --pdbcls=IPython.core.debugger:Pdb -s
sumber
Pada 2019-11, inilah yang harus memperbaikinya:
sumber
prompt-toolkit
versi2.0.10
maka ipdb akan berfungsi dengan baik lagi, karena rusak karena pembaruan terbaru dari paket ini ke 3.0.0