Проблемы с тестированием с помощью pytest с макетом в подклассеPython

Программы на Python
Ответить
Anonymous
 Проблемы с тестированием с помощью pytest с макетом в подклассе

Сообщение Anonymous »

У меня возникли проблемы при попытке имитировать класс, вызванный в другой класс.
У меня есть три модуля:
tree.py

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

from branch import Branch

class Tree:

type_of_tree = None
branches = None

def __init__(self, type_of_tree, branches = 0, default_leaves = 0):
self.type_of_tree = type_of_tree
self.branches = []
for branch in range(branches):
self.create_branch(default_leaves)

def create_branch(self, leaves):
self.branches.append(Branch(leaves))

def get_leaves(self):
return_value = []
for branch in self.branches:
return_value.extend(branch.get_leaves())
return return_value
branch.py

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

import uuid
from leave import Leave

class Branch:
leaves = None
identifier = None

def __init__(self, leaves=0):
self.identifier = str(uuid.uuid4())
self.leaves = []
for leave in range(leaves):
self.create_leave()

def create_leave(self):
self.leaves.append(Leave())

def get_leaves(self):
return_value = []
for leave in self.leaves:
return_value.append(leave.get_identifier())
return return_value
leave.py

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

import uuid

class Leave:
identifier = None

def __init__(self):
self.identifier = str(uuid.uuid4())

def get_identifier(self):
return self.identifier

Я пытаюсь высмеять выход из класса с помощью этого кода:

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

from unittest.mock import patch, MagicMock
from uuid import uuid4

from tree import Tree

FAKE_UUID = str(uuid4())

class TestLeave:

def test_leave(self):
with patch('leave.Leave') as mock_leave:
mock_leave.return_value = MagicMock()
mock_leave.get_identifier.return_value = FAKE_UUID
tree = Tree("Pine", 1, 1)
leaves = tree.get_leaves()
assert leaves == [FAKE_UUID]
Тест не пройден. Я читал документацию по патчу, но не нашел соответствующей информации.

Подробнее здесь: https://stackoverflow.com/questions/792 ... a-subclass
Ответить

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

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

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

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

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