nosetests --pdb
biarkan saya berhenti karena kesalahan atau kegagalan, tetapi ini sudah terlambat untuk kebutuhan saya. Melangkah melalui kode selama eksekusi membantu saya men-debug di mana masalahnya.
Namun, nosetests sangat membantu karena memungkinkan pengujian yang mengandalkan impor relatif (yaitu pengujian dalam sebuah paket).
Bagaimana cara mengatur breakpoint sebelum pengujian dijalankan? Saat ini saya menggunakan:
python -m pdb /path/to/my/nosetests testfile.py
Solusi ini tidak memadai. Nosetests mengganggu output pdb, dan kontrol keyboard saya (misalnya tombol panah) rusak.
Menggunakan import pdb; pdb.set_trace () sepertinya ide yang bagus, namun nosetests memblokir akses saya ke konsol pdb.
from nose.tools import set_trace; set_trace()
Bahkan lebih baik daripada mengingat untuk menggunakan
-s
adalah menggunakanset_trace
varian yang disertakan dengan Hidung. Menambahkanfrom nose.tools import set_trace; set_trace()
di mana pun Anda ingin masuk ke debugger. Pengalihan stdin / out akan diurus untuk Anda. Satu-satunya efek samping aneh yang saya hadapi adalah ketidakmampuan untuk memulai ulang kode Anda dari dalam pdb (menggunakan
run
) saat melakukan debug selama operasi hidung.sumber
pdb
berlari? Saya yakin ada dokumen, tetapi di luar kepala saya-s
"melangkah ke" pemanggilan fungsi,n
pergi ke pernyataan "berikutnya",u
memindahkan "ke atas" tumpukan, dand
memindahkan "ke bawah". Anda dapat menggunakanb
untuk menyetel breakpoint danc
"melanjutkan" serta keluar dari stepping debugger. Semoga membantu!Jika Anda memiliki ipython , untuk penggunaan luar biasa yang tidak terbatas:
import ipdb; ipdb.set_trace()
* kedahsyatan tak terbatas: seperti ipython - pelengkapan otomatis, pewarnaan, dll.
sumber
Jika Anda menggunakan pytest , Anda bisa menggunakan
import pytest; pytest.set_trace()
Lihat dokumentasi .
sumber