DaftAcademy / daftacademy-python_levelup-spring2019

17 stars 17 forks source link

5.2 #29

Open syzymon opened 5 years ago

syzymon commented 5 years ago

Cześć, mam problem z przejściem testów w zadaniu 5.2. Repl.it zwraca mi coś takiego:

Traceback (most recent call last):
  File "/home/runner/unit_tests.py", line 21, in test_get_10_longest
    response_dict, expected_result
AssertionError: Lists differ: [{'al[47 chars]r': 'Battlestar Galactica', 'genre_id': '19', [2194 chars]99'}] != [{'al[47 chars]r': 'None', 'genre_id': '19', 'media_type_id':[1970 chars]99'}]

First differing element 0:
{'alb[46 chars]r': 'Battlestar Galactica', 'genre_id': '19', [119 chars].99'}
{'alb[46 chars]r': 'None', 'genre_id': '19', 'media_type_id':[103 chars].99'}

Diff is 2933 characters long. Set self.maxDiff to None to see it.

Jak widać zwraca różnicę już na samym początku listy. Pierwszy element mojej odpowiedzi w JSON'ie: {"album_id":"227","bytes":"1054423946","composer":"Battlestar Galactica","genre_id":"19","media_type_id":"3","milliseconds":"5286953","name":"Occupation / Precipice","track_id":"2820","unit_price":"1.99"}

EDIT: Problem rozwiązany, od początku nie rzutowałem wszystkiego na stringa, tak jak w przykładowej odpowiedzi. Poza tym join w polu "composer" nie jest potrzebny, należy wziąć pole bezpośrednio z tracks.

wkondrusiewicz commented 5 years ago

To ja się podłączę do pytania, dostaję bardzo podobny error:

AssertionError: Lists differ: [{'bytes': 1054423946, 'composer': None, 'me[1884 chars]239}] != [{'album_id': '227', 'bytes': '1054423946', [2024 chars]99'}]

First differing element 0:
{'bytes': 1054423946, 'composer': None, 'me[143 chars]2820}
{'album_id': '227', 'bytes': '1054423946', [157 chars].99'}

Diff is 5807 characters long. Set self.maxDiff to None to see it.

A pierwszy element mojej odpowiedzi w jsonie jest następujący:

{"bytes": 1054423946, "composer": null, "media_type_id": 3, "name": "Occupation / Precipice", "unit_price": "1.99", "milliseconds": 5286953, "genre_id": 19, "album_id": 227, "track_id": 2820}

Ponadto zastanawia mnie dlaczego ja w polu composer mam "null", a @syzymon "Battlestar Galactica". Odpowiedź wyświetlam za pomocą Response(json.dumps(moja_lista), mimetype='application/json')

Jakakolwiek wskazówka będzie mile widziana.

syzymon commented 5 years ago

Tak jak w przykładowej odpowiedzi, należy wszystko rzutować na stringa, np. {"album_id":"1","bytes":"11170334","composer":"Angus Young, Malcolm Young, Brian Johnson","genre_id":"1","media_type_id":"1","milliseconds":"343719","name":"For Those About To Rock (We Salute You)","track_id":"1","unit_price":"0.99"} a co do composer to miałem tam po prostu niepotrzebnego joina :) Po tym już przeszło testy.

FHoffmannCode commented 5 years ago

Faktycznie należy rzutować na stringa wszystkie typy danych, bo niestety autor tej testowej bazy użył w niej w paru miejscach bardzo dziwnych typów, które nie chcą się ładnie same konwertować do jsona.

Zaraz uzupełnię informacje w poleceniu.

Odpowiedź wyświetlam za pomocą Response(...)

dużo wygodniej by było zrobić jsonify(moja_lista)

koseq commented 5 years ago

Też mam problem z testami w tym zadaniu: image

Pierwszy element mojego JSONa wygląda tak: [ { "album_id": "227", "bytes": "1054423946", "composer": null, "genre_id": "19", "media_type_id": "3", "milliseconds": "5286953", "name": "Occupation / Precipice", "track_id": "2820", "unit_price": "1.99" }, ..]

paw787878 commented 5 years ago

Mój pierwszy wiersz (przechodzi testy) wygląda następująco {"album_id":"227","bytes":"1054423946","composer":"None","genre_id":"19","media_type_id":"3","milliseconds":"5286953","name":"Occupation / Precipice","track_id":"2820","unit_price":"1.99"}

Więc widzę róznice taką, że Ty masz null a ja mam "None". To jest jakas kwestia rzutowania wyniku na stringa (ewentualnie być może problem z tym, że coś się nie zrzutowało na pythonowego None czy coś, na początek wszystko zrzutuj na stringa) (Twój null to nie string).

kaletap commented 5 years ago

EDIT: Ok, problem rozwiązany (teraz nagle działa) A może ktoś wie dlaczego dostaje taki error?

Traceback (most recent call last):
  File "/home/runner/unit_tests.py", line 16, in test_get_10_longest
    response_dict = json.loads(response.text)
  File "/usr/local/lib/python3.6/json/__init__.py", line 354, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.6/json/decoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.6/json/decoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Moja odpowiedź na endpoincie /longest_tracks to:

[{"album_id":"227","bytes":"1054423946","composer":"None","genre_id":"19","media_type_id":"3","milliseconds":"5286953","name":"Occupation / Precipice","track_id":"2820","unit_price":"1.99"},{"album_id":"229","bytes":"1059546140","composer":"None","genre_id":"21","media_type_id":"3","milliseconds":"5088838","name":"Through a Looking Glass","track_id":"3224","unit_price":"1.99"},{"album_id":"253","bytes":"536824558","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2960293","name":"Greetings from Earth, Pt. 1","track_id":"3244","unit_price":"1.99"},{"album_id":"253","bytes":"577829804","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2956998","name":"The Man With Nine Lives","track_id":"3242","unit_price":"1.99"},{"album_id":"253","bytes":"521387924","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2956081","name":"Battlestar Galactica, Pt. 2","track_id":"3227","unit_price":"1.99"},{"album_id":"253","bytes":"541359437","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2952702","name":"Battlestar Galactica, Pt. 1","track_id":"3226","unit_price":"1.99"},{"album_id":"253","bytes":"551759986","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2935894","name":"Murder On the Rising Star","track_id":"3243","unit_price":"1.99"},{"album_id":"253","bytes":"554509033","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2927802","name":"Battlestar Galactica, Pt. 3","track_id":"3228","unit_price":"1.99"},{"album_id":"253","bytes":"512381289","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2927677","name":"Take the Celestra","track_id":"3248","unit_price":"1.99"},{"album_id":"253","bytes":"536784757","composer":"None","genre_id":"20","media_type_id":"3","milliseconds":"2926593","name":"Fire In Space","track_id":"3239","unit_price":"1.99"}]