1import unittest
2
3import solution
4
5
6class TestSanity(unittest.TestCase):
7 """Check if all of the classes are present."""
8
9 def test_haunted_mansion(self):
10 self.assertIn('HauntedMansion', dir(solution), 'Убеди се, че класът "HauntedMansion" е наличен с точно това име.')
11 self.assertTrue(isinstance(solution.HauntedMansion, type), 'Убеди се, че "HauntedMansion" е клас.')
12
13
14if __name__ == '__main__':
15 unittest.main()
1import unittest
2
3from solution import HauntedMansion
4
5
6class TestHauntedMansion(unittest.TestCase):
7 """Test the HauntedMansion class."""
8
9 def test_haunted_mansion(self):
10 """The mansion should be really spooky and haunted."""
11 haunted_mansion = HauntedMansion(message="Happy Halloween!", _secret_location=True)
12 self.assertEqual(haunted_mansion.spooky_message, "Happy Halloween!")
13 self.assertTrue(haunted_mansion.spooky__secret_location)
14 self.assertEqual(haunted_mansion.message, "Booooo, only ghosts here!")
15 self.assertEqual(haunted_mansion._secret_room, "Booooo, only ghosts here!")
16
17 haunted_mansion.floors = 5
18 haunted_mansion._secret_floor = "basement"
19 haunted_mansion.spooky_buttler = "Hehe, I said butt..."
20 self.assertEqual(haunted_mansion.spooky_floors, 5)
21 self.assertEqual(haunted_mansion.spooky__secret_floor, "basement")
22 self.assertEqual(haunted_mansion.spooky_spooky_buttler, "Hehe, I said butt...")
23 self.assertEqual(haunted_mansion.floors, "Booooo, only ghosts here!")
24 self.assertEqual(haunted_mansion._secret_floor, "Booooo, only ghosts here!")
25 self.assertEqual(haunted_mansion.spooky_buttler, "Booooo, only ghosts here!")
26
27 self.assertIsInstance(haunted_mansion.__dict__, dict)
28
29if __name__ == "__main__":
30 unittest.main()
Виктор Бечев
02.11.2024 21:43За тази без коментари - честито, не сме забелязали проблемен код, който да ви индикираме. :)
|
Георги Кунчев
01.11.2024 17:27@Стефан_Шиваров, задачата се фокусира върху атрибути на инстанцията, които или са подадени при инициализиране, или сетнати след това, както е в примера за Почтибезглавия Ник.
Абстрахирай се от атрибути на класа. В крайна сметка този клас ти го пишеш и такива атрибути не очакваме да има. Да, ние бихме могли да ги добавим динамично, но тъй като не сме дефинирали изисквания за такова поведение, няма да го правим.
За въпроса ти за сетването - мисля, че примерът по-горе за Почтибезглавия Ник е показателен и отговаря на въпроса.
|
Стефан Шиваров
01.11.2024 16:41Имам два въпроса, свързани със викане на class / static variables / константи за класа:
Да речем, че имаме някакво \_MY\_CLASS\_VARIABLE = 4 в класа
1. Ако кажем haunted\_mansion.\_MY\_CLASS\_VARIABLE, oчакваме "Booo....", а при haunted\_mansion.spooky\_\_MY\_CLASS\_VARIABLE -> 4 ?
2. Aко го викнем чрез класа директно, тоест HauntedMansion.\_MY\_CLASS\_VARIABLE и аналогично HauntedMansion.spooky\_\_MY\_CLASS\_VARIABLE, пак ли очакваме същото поведение като при викане от конкретна инстанция?
И още един въпрос - нуждаем се от spooky_ префикса само за достъп (get-ване) на атрибута, или и при set-ване, тоест при haunted_mansion.butler = 'New name'
|
Георги Кунчев
01.11.2024 10:12`print(HauntedMansion(_nikola_georgiev='Може ли да дадете пример за очаквано поведение при работа с protected атрибути').spooky__nikola_georgiev)`
|
Никола Георгиев
01.11.2024 09:31Може ли да дадете пример за очаквано поведение при работа с protected атрибути
|
|
Стефан Шиваров
01.11.2024 00:44Ако атрибутът, който се опитаме да достъпим, не съществува, трябва да хвърляме AttributeError или пак трябва да върнем "Booooo, only ghosts here!" ?
|
Георги Кунчев
31.10.2024 23:36@Димитър_Фенерски, същото, което и с останалите. Просто при поискване ще имаш повторение на "spooky_" частта. Напрамер:
`print(HauntedMansion(spooky_arg='Наближава полунощ!').spooky_spooky_arg) # Наближава полунощ!`
|
Димитър Фенерски
31.10.2024 22:54Ако "обикновеното" име започва със "spooky_" какво трябва да се случва?
|