Домашни > Bang the ranga! > Решения > Решението на Милица Лазарова

Резултати
3 точки от тестове
-1 точки от учител

2 точки общо

10 успешни теста
0 неуспешни теста
Код
Скрий всички коментари

  1from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
  2from tempfile import NamedTemporaryFile
  3import unittest
  4import os
  5
  6
  7class TestDoesTheBangaRang(unittest.TestCase):
  8    def test_when_words_exist(self):
  9        with NamedTemporaryFile(mode="w", delete=False) as file:
 10            file.write("banga the ranga") 
 11            filename = file.name
 12
 13        try:
 14            result = does_the_banga_rang(filename)
 15            self.assertEqual(result, 2)
 16        finally:
 17           os.remove(filename)
 18
 19    def test_when_3_words_exist(self):
 20        with NamedTemporaryFile(mode="w", delete=False) as file:
 21            file.write("bang a the ranga") 
 22            filename = file.name
 23
 24        try:
 25            result = does_the_banga_rang(filename)
 26            self.assertEqual(result, 3)
 27        finally:
 28           os.remove(filename)
 29
 30    def test_when_words_in_wrong_order(self):
 31        with NamedTemporaryFile(mode="w", delete=False) as file:
 32            file.write("ranga the banga") 
 33            filename = file.name
 34
 35        try:
 36            result = does_the_banga_rang(filename)
 37            self.assertEqual(result, 0)
 38        finally:
 39           os.remove(filename)
 40
 41    def test_when_empty_file(self):
 42        with NamedTemporaryFile(mode="w", delete=False) as file:
 43            filename = file.name
 44
 45        try:
 46            result = does_the_banga_rang(filename)
 47            self.assertEqual(result, 0)
 48        finally:
 49           os.remove(filename)
 50
 51    def test_if_returns_min_count(self):
 52        with NamedTemporaryFile(mode="w", delete=False) as file:
 53            file.write("bang a banga ranga bangaranga")
 54            filename = file.name
 55
 56        try:
 57            result = does_the_banga_rang(filename)
 58            self.assertEqual(result, 1)
 59        finally:
 60           os.remove(filename)
 61
 62    def test_case_insensitivity(self):
 63        with NamedTemporaryFile(mode="w", delete=False) as file:
 64            file.write(" banga the RaNga")
 65            filename = file.name
 66
 67        try:
 68            result = does_the_banga_rang(filename)
 69            self.assertEqual(result, 2)
 70        finally:
 71           os.remove(filename)
 72
 73    def test_checks_for_whole_words(self):
 74        with NamedTemporaryFile(mode="w", delete=False) as file:
 75            file.write("banga rangaaa")
 76            filename = file.name
 77
 78        try:
 79            result = does_the_banga_rang(filename)
 80            self.assertEqual(result, 0)
 81        finally:
 82           os.remove(filename)
 83
 84    def test_when_words_have_punctuation(self):
 85        with NamedTemporaryFile(mode="w", delete=False) as file:
 86            file.write("banga, ranga!")
 87            filename = file.name
 88
 89        try:
 90            result = does_the_banga_rang(filename)
 91            self.assertEqual(result, 2)
 92        finally:
 93           os.remove(filename)
 94
 95    def test_when_file_does_not_exist(self):
 96        with self.assertRaises(TheBangaDoesNotRangError):
 97            does_the_banga_rang("file_is_missing")
 98
 99
100if __name__ == '__main__':
101 unittest.main()
102
103# Грозно ли ще е ако добавя такава функция:
104# def assert_bangaranga_result(self, content, expected):
105#   with NamedTemporaryFile(mode="w", delete=False) as file:
106#       file.write(content)
107#       filename = file.name
108
109#       try:
110#           result = does_the_banga_rang(filename)
111#           self.assertEqual(result, expected)
112#       finally:
113#           os.remove(filename)
114# и я викам във всики тестове

..........
----------------------------------------------------------------------
Ran 10 tests in 0.058s

OK

Дискусия
Виктор Бечев
31.05.2026 18:00

Дори щеше да е правилно да го направиш. Най-правилно щеше да е да ползваш `mock`. Все пак - добро решение, просто не най-доброто.
История
Това решение има само една версия.