Макет созданного класса в атрибуте классаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Макет созданного класса в атрибуте класса

Сообщение Anonymous »

Я работаю над проектом, в котором используется класс Deck для получения данных из API. Этот класс создается внутри другого класса под названием Game Manager через его __init__ (кстати, это игра в блэкджек) следующим образом:
server/game_manager.py

Код: Выделить всё

import .deck import Deck

class GameManager:
self._deck = Deck()
server/deck.py

Код: Выделить всё

class Deck:
def fetch_cards(self):
'''Method that gets cards from api'''
pass
Сейчас я получаю ошибку «Атрибут не найден», которую я не могу обойти, когда имитирую класс Deck, чтобы избежать подключения к API. Мой тест проходит следующим образом:
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 для этого экземпляра, который я использую для тестов, или мне следует сохранить свою стратегию имитирования для конкретных тестов, которые я хочу сделать. В чем разница между этими двумя подходами?
Наконец, я следил за примерами в документации, а также за ответами на Stack Overflow, но на данный момент Я не могу понять, над чем издеваться и как издеваться. Всегда приятно получать ответы в коде, но мне хотелось бы увидеть пробелы в моих знаниях в моем мыслительном процессе.

Подробнее здесь: https://stackoverflow.com/questions/789 ... -attribute
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»