1import unittest
2from unittest.mock import patch, mock_open
3from secret import validate_recipe, RuinedNikuldenDinnerError
4
5
6class TestNikuldenValidator(unittest.TestCase):
7 def test_valid_recipe(self):
8 mock_file_content = "Рецепта за приготвяне на вкусна риба"
9 with patch("builtins.open", mock_open(read_data=mock_file_content)):
10 self.assertTrue(validate_recipe("file1.txt"))
11
12 mock_file_content = "Рецепта за Риба"
13 with patch("builtins.open", mock_open(read_data=mock_file_content)):
14 self.assertTrue(validate_recipe("file2.txt"))
15
16 mock_file_content = " Рецепта за приготвяне на рибена глава"
17 with patch("builtins.open", mock_open(read_data=mock_file_content)):
18 self.assertTrue(validate_recipe("file3.txt"))
19
20 mock_file_content = " Рецепта за приготвяне на Рибена глава"
21 with patch("builtins.open", mock_open(read_data=mock_file_content)):
22 self.assertTrue(validate_recipe("file4.txt"))
23
24 mock_file_content = "Рецепта за пълнен Шаран"
25 with patch("builtins.open", mock_open(read_data=mock_file_content)):
26 self.assertTrue(validate_recipe("file5.txt"))
27
28 mock_file_content = "Рецепта за пълнен шаран"
29 with patch("builtins.open", mock_open(read_data=mock_file_content)):
30 self.assertTrue(validate_recipe("file6.txt"))
31
32 mock_file_content = "Рецепта за Сьонга с аспержи на фурна"
33 with patch("builtins.open", mock_open(read_data=mock_file_content)):
34 self.assertTrue(validate_recipe("file7.txt"))
35
36 mock_file_content = "Рецепта за сьонга с аспержи на фурна"
37 with patch("builtins.open", mock_open(read_data=mock_file_content)):
38 self.assertTrue(validate_recipe("file8.txt"))
39
40 mock_file_content = "Рецепта за приготвяне на риба, рибена глава, шаран,сьонга"
41 with patch("builtins.open", mock_open(read_data=mock_file_content)):
42 self.assertTrue(validate_recipe("file9.txt"))
43
44 def test_invalid_recipe(self):
45 mock_file_content = "Рецепта за кекс"
46 with patch("builtins.open", mock_open(read_data=mock_file_content)):
47 self.assertFalse(validate_recipe("file10.txt"))
48
49 mock_file_content = ""
50 with patch("builtins.open", mock_open(read_data=mock_file_content)):
51 self.assertFalse(validate_recipe("file11.txt"))
52
53 mock_file_content = "\n\n \n"
54 with patch("builtins.open", mock_open(read_data=mock_file_content)):
55 self.assertFalse(validate_recipe("file12.txt"))
56
57 mock_file_content = "р#ба"
58 with patch("builtins.open", mock_open(read_data=mock_file_content)):
59 self.assertFalse(validate_recipe("file13.txt"))
60
61 def test_bad_recipe_file(self):
62 with patch("builtins.open", side_effect=OSError("File not found")):
63 with self.assertRaises(RuinedNikuldenDinnerError):
64 validate_recipe("file14.txt")
65
66 with patch("builtins.open", side_effect=IOError("Cannot read file")):
67 with self.assertRaises(RuinedNikuldenDinnerError):
68 validate_recipe("file15.txt")
69
70if __name__ == "__main__":
71 unittest.main()
F...
======================================================================
FAIL: test_naive_in_validator (test.TestTestNikuldenValidator.test_naive_in_validator)
Test with implementation missing word splits.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 92, in test_naive_in_validator
self.assertFalse(result.wasSuccessful(),
AssertionError: True is not false : Expecting test_invalid_recipe to fail with an implementation missing word splits.
----------------------------------------------------------------------
Ran 4 tests in 0.047s
FAILED (failures=1)
Станислава Желязкова
08.12.2024 17:48Благодаря за обратната връзка!:)
|
Виктор Бечев
07.12.2024 12:26Не обяснявам на всички защо им фейлват тестовете на тестовете, но понеже твоите са супер изчерпателни, ми се прииска да го направя.
Единственият _(скрит)_ requirement, който си пропуснала да тестваш е за рецепти, които съдържат думата като под-низ - `"Никулден е празник на рибарите и още други хора"`. В тази "рецепта" имаш `"рибарите"` и тъй като ние тестваме с няколко счупени имплементации, една от тях не взима предвид такова поведение и съответно би било хубаво тестовете да го хванат. Затова имаш и 1 фейлващ тест.
|