Aktywne Wpisy

MLeko29 +890
Dzień dobry i dobranoc
źródło: 1000064542
Pobierz
luke-mat +210
Święta się zbliżają, a więc wożenie rodziny samochodem.
Pamiętaj, jeśli rodzina powie Ci "każdy płaci za siebie" i nie chce zapinać pasów.
Masz prawo powiedzieć: "Zapinasz pasy lub wysiadasz"
80kg Pasażer za kierowcą, bez pasów, przy stłuczce przy 50km/h uderza w fotel kierowcy z siłą 2 ton
#samochody #motoryzacja
Pamiętaj, jeśli rodzina powie Ci "każdy płaci za siebie" i nie chce zapinać pasów.
Masz prawo powiedzieć: "Zapinasz pasy lub wysiadasz"
80kg Pasażer za kierowcą, bez pasów, przy stłuczce przy 50km/h uderza w fotel kierowcy z siłą 2 ton
#samochody #motoryzacja
źródło: image
Pobierz




Mam bardzo prostą metodę w klasie:
def save_to_file(self, path):try:
with open(path, 'w') as file:
file.write(json.dumps(self.data, indent=4))
except PermissionError:
print(f"no permissions to save the file in {path}")
Chcę odpalić unit test:
def test_write_to_file_without_permissions(self):d = data_getter(LoadFromFile=True, data_path='data.json')
self.assertRaises(PermissionError, d.save_to_file, 'no_permissions_to_write/data.json')
Problem jest taki, że jeżeli zostawię blok except w metodzie, to wtedy unit test go nie łapie. Jeżeli wyrzucę nowy error w bloku except, to zaliczam test, ale sam program wtedy się będzie wywalać.
W jaki sposób mogę zachować block except, żeby test case wykrywał że dostałem w ryj wyjątkiem nieobsłużonym?
save_to_filei złap go tam, gdzie wywołujesz tą metodędef testwritetofilewithoutpermissions(self, printmock)
...
printmock.assertcalled_once()
Żeby zrobić to jak człowiek printa zastąp loggiem i użyj caploga (nie wiem czy unittest wspiera), używaj pytesta
Jak dana klasa ma nie być reużywalna to dobry znak, że nie warto jej testować. Spróbój przetestować poziom wyżej, czyli funkcję/klasę, która jej używa. Często pisze
A czy zrobienie czegoś takiego ma sens, jeżeli chcę poinformować użyszkodnika gdzie nastąpił, jaki błąd, czy wypieprzyc w ogóle ten block try-catch razem z logami?
if os.access(path, os.W_OK)
cos co spowoduje np. w aplikacji desktopowej wyskoczenie okienka/wyraznego powiadomienia, ze nie udalo sie zapisac pliku, bo costam - nie ma uprawnien, sciezka zapisu nie istnieje, plik nie istnieje, gwiazdy sa zle ustawione etc. tak, zeby