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`. Все пак - добро решение, просто не най-доброто.
|
24.05.2026 12:24