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

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

3 точки общо

10 успешни теста
0 неуспешни теста
Код

 1import unittest
 2from unittest.mock import mock_open, patch
 3
 4from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
 5
 6
 7class DoesTheBangaRangTests(unittest.TestCase):
 8    def assert_banga_result(self, file_content, expected_result):
 9        with patch("builtins.open", mock_open(read_data=file_content)):
10            result = does_the_banga_rang("some-file.txt")
11        self.assertEqual(result, expected_result)
12
13    def test_forms_target_from_a_single_whole_word(self):
14        self.assert_banga_result("bangaranga", 1)
15
16    def test_forms_target_from_multiple_words_in_file_order_while_ignoring_irrelevant_words(self):
17        self.assert_banga_result("banga the ranga", 2)
18
19    def test_requires_matching_words_to_follow_file_order(self):
20        self.assert_banga_result("ranga banga", 0)
21
22    def test_returns_minimum_number_of_words_when_multiple_sequences_match(self):
23        self.assert_banga_result("bang a banga ranga bangaranga", 1)
24
25    def test_matches_words_case_insensitively(self):
26        self.assert_banga_result("BANGA something RANGA", 2)
27
28    def test_does_not_use_partial_word_matches(self):
29        self.assert_banga_result("xxbangaranga", 0)
30
31    def test_returns_zero_when_no_matching_sequence_exists(self):
32        self.assert_banga_result("Does the banga rang?", 0)
33
34    def test_raises_custom_error_when_file_cannot_be_read(self):
35        with patch("builtins.open", side_effect=OSError):
36            with self.assertRaises(TheBangaDoesNotRangError):
37                does_the_banga_rang("missing-file.txt")
38
39
40if __name__ == "__main__":
41    unittest.main()

..........
----------------------------------------------------------------------
Ran 10 tests in 0.221s

OK

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