server/game_manager.py
Код: Выделить всё
import .deck import Deck
class GameManager:
self._deck = Deck()
Код: Выделить всё
class Deck:
def fetch_cards(self):
'''Method that gets cards from api'''
pass
server/tests/game_manager_test.py
Код: Выделить всё
import unittest
from unittest.mock import patch, Mock
from ..game_manager import *
gm = GameManager()
class TestCardDraw(unittest.TestCase):
@patch("server.game_manager.deck")
def test_draw_game_start_cards(self, deck_mock):
deck_mock = Mock()
deck_mock.fetch_cards.return_value = [7,2]
self.assertEqual(len(gm._game_state["player_one"]["cards"]), 2)
Attribute Error: module 'server.game_manager' does not the attribute 'deck'
- Должен ли я имитировать импортированный модуль Deck из server/game_manager.py или модуль Deck из самого модуля server/deck.py?< /li>
Какая разница между тем и другим? - Я создаю экземпляр GameManager в верхней части своих наборов тестов для тестирования некоторых методов из одного и того же экземпляра. Я изменил значение этого экземпляра в одном из наборов тестов, чтобы получить желаемый результат с помощью setUp. Должен ли я имитировать метод fetch_cards для этого экземпляра, который я использую для тестов, или мне следует сохранить свою стратегию имитирования для конкретных тестов, которые я хочу сделать. В чем разница между этими двумя подходами?
Подробнее здесь: https://stackoverflow.com/questions/789 ... -attribute