Podsumowanie sekcji 4a oraz kod

Zrobiliśmy w tej sekcji prawdziwy debug frameworka. Poznaliśmy przykłady z prawdziwego życia testera oraz odkryliśmy wiele nieoczywistych praw debugowania

Podsumujmy tematy w których powinieneś nabyć podstawową wiedzę:

  1. ✅ Uruchomienie debugowania pojedynczego testu.
  2. ✅ Obserwacja wyników w konsoli.
  3. ✅ Podgląd obiektu self jako miejsca przechowywania informacji o dziedziczonych własnościach.
  4. ✅ Analiza widoku Frames i składowych testu (np. dekoratora).
  5. ✅ Przeprowadzenie debug testu w konsoli (funkcja brakpoint().
  6. ✅ Przeprowadzenie debug funkcji opakowującej drivera.
  7. ✅ Debug za pomocą print(), gdy nie jesteśmy w stanie debugować tradycyjnie.
  8. ✅ Mutowanie testów w celu sprawdzenia poprawności ich działania.
  9. ✅ Uruchomienie zestawu testów w trybie Debug w celu debugowania pojedynczego testu.
  10. ✅ Podgląd breakpointów w zakładce Favorites i zarządzanie nimi.
  11. ✅ Mutacja testu poprzez usunięcie czekania i pozytywne zakończenie w Debug.

Dodatkowe operacje:

  1. 💡 Nie zawsze wierzymy debuggerowi z IDE. Czasem potrzeba innych rozwiązań.
  2. 💡 Wiedza o debugowaniu z konsoli oraz za pomocą print() nie jest kluczowa ale może nam pomóc w niestandardowych sytuacjach.
  3. 💡 Mutowanie testów (intencjonalne psucie) wraz z debugowaniem pozwala na poprawę jakości naszych testów.
  4. 💡 Praca nad testami w trybie Debug nie odzwierciedla bezpośrednio standardowego uruchomienia testów dlatego ważne jest aby weryfikować testy poprzez tradycyjne uruchomienie.
  5. 💡 Zarządzanie breakpointami i ich poprawne umieszczenie (np. w klasie bazowej) pozwala nam na zrozumienie naszego kodu i sprawne po nim się przemieszczanie podczas trybu Debug.
  6. 💡 Czasem aby wykazać błąd potrzeba debugować cały zestaw testów i powinniśmy wiedzieć jak to zrobić.

Przerobiłeś tematy które możemy nazwać zaawansowanymi podstawami💪

Powinieneś nie bać się debugowania nawet bardziej kompleksowych rozwiązań i zachęcamy Ciebie abyś robił to jak najczęściej. Dzięki temu nabierzesz wprawy oraz dużo sprawniej zadbasz o jakość swoich testów.

Dobra robota! Do zobaczenia w kolejnej sekcji 😎

Kod zmodyfikowany w tej sekcji

Jedyne co zmodyfikowaliśmy to kod klasy ScreenshotListener() z pliku helpers/operational_helpers.py:

class ScreenshotListener(AbstractEventListener):
   def on_exception(self, exception, driver):
       # PyCharm debugger cause exception so we need to ignore it
       pycharm_debugger_exceptions = [
           "'WebElement' object has no attribute '__len__'",
           "'WebDriver' object has no attribute '__len__'",
           "'WebDriver' object has no attribute 'shape'",
           "'WebElement' object has no attribute 'shape'"
       ]
       if str(exception) not in pycharm_debugger_exceptions:
           make_screenshot(driver, 'driver')

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *