Домашни > Bang the ranga! > Решения > Решението на Цветинка Хаджиева

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

3 точки общо

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

 1import unittest
 2import tempfile
 3import os
 4
 5from bangaranga import does_the_banga_rang, TheBangaDoesNotRangError
 6
 7
 8class TestBangaRang(unittest.TestCase):
 9
10    def make_file(self, text):
11        file = tempfile.NamedTemporaryFile(mode="w", delete=False, encoding="utf-8")
12        file.write(text)
13        file.close()
14        return file.name
15
16    def test_whole_word_bangaranga_returns_1(self):
17        filename = self.make_file("hello bangaranga world")
18        result = does_the_banga_rang(filename)
19        os.remove(filename)
20        self.assertEqual(result, 1)
21
22    def test_two_words_banga_ranga_returns_2(self):
23        filename = self.make_file("The banga is doing some ranga!")
24        result = does_the_banga_rang(filename)
25        os.remove(filename)
26        self.assertEqual(result, 2)
27
28    def test_three_words_bang_a_ranga_returns_3(self):
29        filename = self.make_file("bang a small ranga")
30        result = does_the_banga_rang(filename)
31        os.remove(filename)
32        self.assertEqual(result, 3)
33
34    def test_chooses_minimum_number_of_words(self):
35        filename = self.make_file("bang a banga ranga bangaranga")
36        result = does_the_banga_rang(filename)
37        os.remove(filename)
38        self.assertEqual(result, 1)
39
40    def test_words_must_be_in_correct_order(self):
41        filename = self.make_file("ranga something banga")
42        result = does_the_banga_rang(filename)
43        os.remove(filename)
44        self.assertEqual(result, 0)
45
46    def test_case_insensitive(self):
47        filename = self.make_file("BANGA something RANGA")
48        result = does_the_banga_rang(filename)
49        os.remove(filename)
50        self.assertEqual(result, 2)
51
52    def test_partial_match_is_not_enough(self):
53        filename = self.make_file("banga rang")
54        result = does_the_banga_rang(filename)
55        os.remove(filename)
56        self.assertEqual(result, 0)
57
58    def test_no_valid_solution_returns_0(self):
59        filename = self.make_file("hello bang rang banana")
60        result = does_the_banga_rang(filename)
61        os.remove(filename)
62        self.assertEqual(result, 0)
63
64    def test_no_words_returns_0(self):
65        filename = self.make_file("12345 !!! ???")
66        result = does_the_banga_rang(filename)
67        os.remove(filename)
68        self.assertEqual(result, 0)
69
70    def test_empty_file_returns_0(self):
71        filename = self.make_file("")
72        result = does_the_banga_rang(filename)
73        os.remove(filename)
74        self.assertEqual(result, 0)
75
76    def test_file_error_raises_custom_error(self):
77        with self.assertRaises(TheBangaDoesNotRangError):
78            does_the_banga_rang("file_that_does_not_exist.txt")
79
80
81if __name__ == "__main__":
82    unittest.main()

....F.....
======================================================================
FAIL: test_student_tests_catch_bad_implementation_matches_partial_words (test.StudentTestSuiteEvaluationTests.test_student_tests_catch_bad_implementation_matches_partial_words)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 98, in test
self.assertTrue(
~~~~~~~~~~~~~~~^
bad_result["failed_test_ids"],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f"Student tests passed against incorrect implementation: {implementation_name!r}.\n{format_student_output(bad_result['output'])}",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
AssertionError: set() is not true : Student tests passed against incorrect implementation: 'bad_implementation_matches_partial_words'.
| Output:
| ----------------------------------------------------------------------
| Ran 11 tests in 0.003s
|
| OK

----------------------------------------------------------------------
Ran 10 tests in 0.076s

FAILED (failures=1)

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