Издевательство над Python, почему мокер не нужно инициализировать. Как внедрить приспособление в модульный тестPython

Программы на Python
Ответить
Anonymous
 Издевательство над Python, почему мокер не нужно инициализировать. Как внедрить приспособление в модульный тест

Сообщение Anonymous »

Я пишу модульный тест, в котором мне нужно имитировать поведение API, есть две части вопроса. Прямо сейчас я использую приспособление, которое работает нормально, но я не совсем понимаю, как здесь работает макет, я не совсем понимаю, как объекты-мокеры передаются в функциюock_dataiku во время выполнения (думаю, это какое-то волшебство в пакете макета?
@pytest.fixture()
def mock_dataiku(mocker):
# Mock Dataiku client and project
mock_client = MagicMock()
mock_project = MagicMock()
mocker.patch('dataiku.api_client', return_value=mock_client)
mock_client.get_project.return_value = mock_project
return mock_project

def test_cleanse_existing_variable(mock_dataiku):
# Set up project variables
mock_dataiku.get_variables.return_value = {
"local": {"var1": "old_value", "comment": "some_comment"}
}

cleanse(["var1", "comment"])

# Check if variables were set to the default value
expected_variables = {"local": {"var1": "-1", "comment": ""} }
mock_dataiku.set_variables.assert_called_with(expected_variables)

Вторая часть вопроса — как получить эти тесты в классе тестов unittest. Вместо этого я попытался создать экземпляр приспособления, но, очевидно, это не работает, поскольку у меня нет доступа к объекту-мокеру. Я новичок в тестировании, поэтому мне также хотелось бы спросить, имеет ли смысл в этом случае использовать unittest.Testcase? Почему светильники не поддерживаются? Могу ли я просто опустить класс и вместо этого использовать pytest сам по себе?
class test_cleanse(unittest.TestCase):
def __init__(self):

# Mock Dataiku client and project
mock_client = MagicMock()
mock_project = MagicMock()
mocker.patch('dataiku.api_client', return_value=mock_client)
mock_client.get_project.return_value = mock_project
#return mock_project
self.mocker=mock.project


Подробнее здесь: https://stackoverflow.com/questions/793 ... ect-fixtur
Ответить

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

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

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

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

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