Forum Testowania i AutomatyzacjiKategoria: BugPrzy uruchomieniu testów z DDT pojawia się dziwny komunikat
AvatarŁukasz Błaszkowski zapytał 5 lat temu

Witajcie,

na sam początek wielkie dzięki za pomoc w poprzednich postach. Wracają do problemu z ddt.

Jak zrobiłem ddt do logowania, to test działa. Test poprawnie działa dla logowania  z ddt. Tu jest repo do logowania:
https://github.com/lblaszkowski/MercuryTours_WSB/tree/e5b5fbafa791c9d4c8dc72d362f97fc6731f969fJak
Zrobiłem ddt do planu podróży, to test działa. Test poprawnie działa dla logowania i planu podróży z ddt. Tu jest repo do planu podróży:
https://github.com/lblaszkowski/MercuryTours_WSB/tree/eb7572550c8701971f0e215a1e48aa73f8d95297
Tutaj zrobiłem ddt do rejestracji i tutaj były problemy. Tu jest repo do rejestracji
https://github.com/lblaszkowski/MercuryTours_WSB/tree/cb185983754002a7890bcd7bebc3cc17d168dc6e
Czasami działają wszystkie testy, a następnym razem żaden test nie działa lub działa jeden albo dwa testy. Tu jest screen z błędami:
Logowanie
https://imgur.com/a/S9xhzbt

Rejestracji
https://imgur.com/a/fBNKAjW

Planu podróży
https://imgur.com/a/BrCaOow
wiecie co jest nie tak ?

Krzysiek KijasKrzysiek Kijas Personel odpowiedział 5 lat temu

Przy próbie uruchamiania innych testów z ddt również występuje ten problem, tzn AttributeError: type object 'Plan_Journey_Pages' has no attribute 'test_Plan_Journey'. Reasumując, biblioteka ddt nie współgra z runnerem z IDE PyCharm w kontekście uruchamiania tylko poszczególnych testów.

W dekoratorze @ddt zawarta jest następująca informacja (aby do niej przejść wystarczy CRTL + lewy przycisk myszy na @ddt):

Class decorator for subclasses of ``unittest.TestCase``.

    Apply this decorator to the test case class, and then
    decorate test methods with ``@data``.

    For each method decorated with ``@data``, this will effectively create as
    many methods as data items are passed as parameters to ``@data``.

    The names of the test methods follow the pattern
    ``original_test_name_{ordinal}_{data}``. ``ordinal`` is the position of the
    data argument, starting with 1.

    For data we use a string representation of the data value converted into a
    valid python identifier.  If ``data.__name__`` exists, we use that instead.

    For each method decorated with ``@file_data('test_data.json')``, the
    decorator will try to load the test_data.json file located relative
    to the python file containing the method that is decorated. It will,
    for each ``test_name`` key create as many methods in the list of values
    from the ``data`` key.

Dekoratory @ddt wraz z @data tworzą sztucznie metody test_Plan_Journey_1__PARAMETRY_PRZEKAZANE_W_@DATA – uruchom wszystkie testy i popatrz na wyniki i nazwy testów w oknie Test Results – powinny tam się ukazać właśnie nazwy z danymi z testów 😉 W przypadku gdy chcemy uruchomić jeden test – mówiąc bardzo ogólnie – runner z IDE nie ogrania tych sztucznych testów, przez co dostajemy informacje, że dany test nie istnieje.

AvatarŁukasz Błaszkowski odpowiedział 5 lat temu

A jak miałem logowanie i plan podróży z ddt, to wszystko śmigało i nie występował ten błąd. A jak dodałem rejestracje z ddt , to nagle sa problemy. Nie kumam 🙁

AvatarŁukasz Błaszkowski odpowiedział 5 lat temu

uruchamiam pojedynczo testy, to co jakiś czas pojawia się błąd. Jest na to rozwiązanie ddt z PyCharmem ?

Krzysiek KijasKrzysiek Kijas Personel odpowiedział 5 lat temu

Hej,
A w jaki sposób odpalasz te testy? W jakich dokładnie przypadkach występują te błędy?
Gdy uruchamiałem testy za pomocą test suite’a albo za pomocą __main__ to wszystko było OK. W przypadku, gdy próbowałem uruchomić pojedyncze testy – to występował właśnie ten błąd – w tym przypadku mam wrażenie że PyCharm nie radzi sobie z pakietem ddt.

1 odpowiedzi
AvatarŁukasz Błaszkowski odpowiedział 5 lat temu

ok. dzięki za info