Предизвикателства > Валидатор за Никулденска рецепта > Решения > Решението на Виктор Бечев

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

1 точки общо

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

 1import unittest
 2from unittest.mock import patch, mock_open
 3
 4from secret import validate_recipe, RuinedNikuldenDinnerError
 5
 6
 7
 8FISH_OPTIONS = ['риба',
 9                'рибена', # в случай, че се ползва рибена глава
10                'шаран',
11                'сьонга']
12VALID_RECIPES = ['Две кила\nриба',
13                 'Рибена глава, опашка и три рибени очи, крило от прилеп и слюнка от баба',
14                 '''Вчера купи бай Григори от пазара жив шаран,
15                 хвана ножа да го коли, да го пържи във тиган.
16                 Ала хитър бе шарана, ножа щом като съзря,
17                 отма перките разтвори, в стаята той полетя.'''
18                 'горчица, морчица, малко лимонов сок, сол и сьонга']
19INVALID_RECIPES = ['nishto',
20                   'Любимата рецепта на Рибарска',
21                   'туй\nонуй\nно не и нещо, донесено от рибар']
22
23
24class TestNikuldenValidator(unittest.TestCase):
25    """Test that the dinner for Nikulden contains fish."""
26
27    def test_valid_recipe(self):
28        """A recipe containing fish should be considered Nikulden-valid."""
29        for recipe in VALID_RECIPES:
30            with patch('builtins.open', mock_open(read_data=recipe)):
31                self.assertTrue(validate_recipe('some_file.txt'))
32
33    def test_invalid_recipe(self):
34        """If the recipe does not contain fish it should not be considered Nikulden-valid."""
35        for recipe in INVALID_RECIPES:
36            with patch('builtins.open', mock_open(read_data=recipe)):
37                self.assertFalse(validate_recipe('some_file.txt'))
38
39    def test_bad_recipe_file(self):
40        """At least a single recipe should contain fish."""
41        with patch('builtins.open', side_effect=OSError):
42            with self.assertRaises(RuinedNikuldenDinnerError):
43                validate_recipe('some_bad_file')
44
45        with patch('builtins.open', side_effect=IOError):
46            with self.assertRaises(RuinedNikuldenDinnerError):
47                validate_recipe('some_bad_file')
48
49
50if __name__ == '__main__':
51    unittest.main()

....
----------------------------------------------------------------------
Ran 4 tests in 0.029s

OK

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