Python'da debug ederken çok işe yarayan bir teknik

taydin

Timur Aydın
Staff member
Katılım
24 Şubat 2018
Mesajlar
25,078
Bu sıralar python öğreniyorum. Bunun için de kendime basit olmayan, hatta ileri seviye bile sayılabilecek bir proje buldum. Proje, bir web sitesinin test edilmesi için otomasyon. Sadece test de değil, örneğin bir sitede düzenli olarak bir işi yapman lazım, bunu manuel olarak kendin girip yapacağına, python senin yerine giriş yapıp bütün gereken navigasyonu yapıp sonuç alıyor. Tırmalattırıyor, ama çok şey de öğreniyorum.

Neyse, bu projeyle uğraşırken hep karşılaştığım senaryo şu. Bir dizi manuel işlem adımını gerçekleşiriyorum ve sonunda benim yazmakta olduğum fonksiyondaki breakpoint'da program duruyor. Adım adım çalıştırıyorum ve bir hata görüyorum. Diyeceksiniz ki "tamam işte, programı durdur, hatayı düzelt, ve tekrar çalıştır". Tamam da, öyle yaparsan, yukarıda bahsettiğim bütün manuel işlemleri teker teker yeniden yapmam lazım. Bazı işlemler uzun sürüyor ve kesinlikle otomasyonu mümkün değil. Yani bütün işlemleri tekrar yap, tekrar breakpoint'a geldik, tüh, bir hata daha gördün, hadi bakalım tekrar ... Eğer bu projeyi fazla yaşlanmadan, daha elim ayağım tutarken bitirmek istiyorsam, daha farklı bir metoda ihtiyacım vardı ...

En sonunda şöyle bir metot kullanmaya başladım: İlgili fonksiyonu ayrı bir modül içerisine yerleştirdim. Sonra da ana programdan, bu modülü "reload" etme seçeneği ekledim. Böylece kod üzerinde değişiklik yapıp, reload etme şansım oldu. Ama bu yeterli olmuyor. Geliştirilen fonksiyonda tam hatayı yakaladığın anda, artık fonksiyonun devam etmesini istemiyorsun. Tekrar fonksiyonun çağrıldığı yere geri dönüp baştan denemek istiyorsun. Yoksa fonksiyonu devam ettirsen, buglar ve sorunlar üst üste binecek, kod ya topallayarak sona gelecek ve return edecek, yada hiç return edemeyecek ve takılacak. Orada da şu metodu kullanıyorum. Program zaten sorun olan kodda durmuş vaziyette iken, python "debug console" üzerinden bir exception ürettiriryoum:

Python:
raise AbortOperation("Aborted")

Bunu yaptığın anda, program doğrudan bu exception'in yakalandığı yere gidiyor. Fonksiyonu değiştirip reload ediyorum, sonra tekrar debug :)
 

Forum istatistikleri

Konular
7,592
Mesajlar
126,901
Üyeler
3,071
Son üye
tekin124

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top