Домашни > Bang the ranga! > Решения > Решението на Ирина Влайкова

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

3 точки общо

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

 1import unittest
 2from unittest.mock import patch, mock_open
 3
 4from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
 5
 6
 7class TestBangaRanga(unittest.TestCase):
 8
 9    def assert_banga_rang_result(self, file_content, expected_result):
10        with patch("builtins.open", mock_open(read_data=file_content)):
11            self.assertEqual(
12                expected_result,
13                does_the_banga_rang("dummy.txt")
14            )
15
16    def test_finds_bangaranga_as_single_word(self):
17        self.assert_banga_rang_result(
18            "bangaranga",
19            1
20        )
21
22    def test_finds_bangaranga_from_two_words(self):
23        self.assert_banga_rang_result(
24            "The banga is doing some ranga!",
25            2
26        )
27
28    def test_finds_bangaranga_from_three_words(self):
29        self.assert_banga_rang_result(
30            "bang a small ranga",
31            3
32        )
33
34    def test_returns_minimum_number_of_words(self):
35        self.assert_banga_rang_result(
36            "bang a banga ranga bangaranga",
37            1
38        )
39
40    def test_words_must_be_in_correct_order(self):
41        self.assert_banga_rang_result(
42            "ranga is before banga",
43            0
44        )
45
46    def test_returns_zero_when_words_do_not_form_exact_string(self):
47        self.assert_banga_rang_result(
48            "Does the banga rang?",
49            0
50        )
51
52    def test_is_case_insensitive(self):
53        self.assert_banga_rang_result(
54            "BANga RANga",
55            2
56        )
57
58    def test_uses_only_whole_words(self):
59        self.assert_banga_rang_result(
60            "xxbangaranga",
61            0
62        )
63
64    def test_returns_zero_for_empty_file(self):
65        self.assert_banga_rang_result(
66            "",
67            0
68        )
69
70    def test_raises_custom_error_when_os_error_occurs(self):
71        with patch("builtins.open", side_effect=OSError):
72            with self.assertRaises(TheBangaDoesNotRangError):
73                does_the_banga_rang("dummy.txt")
74
75    def test_raises_custom_error_when_io_error_occurs(self):
76        with patch("builtins.open", side_effect=IOError):
77            with self.assertRaises(TheBangaDoesNotRangError):
78                does_the_banga_rang("dummy.txt")
79
80
81if __name__ == "__main__":
82    unittest.main()

..........
----------------------------------------------------------------------
Ran 10 tests in 0.263s

OK

Дискусия
История
Това решение има само една версия.