У меня проблема с методами свойств в моем коде.Я строю библиотеку и делаю тесты для нее.Часть тестирования заключается в том, чтобы убедиться, что библиотека правильно обрабатывает ответ json api.У меня есть очень большое и большое количество ответов json, которые я объединил в один файл, который я хочу использовать в своих тестах.Моя первая мысль - создать отдельные классы и функции свойств, которые возвращают json для каждого вызова.В идеале я хотел сделать эти staticmethods
и classmethods
, чтобы мне не пришлось создавать экземпляр объекта.то есть return_value=call_json.Login.correct_login
.Проблема в том, что когда я ссылаюсь на функцию в моих тестах, она возвращает объект свойства вместо словаря.
Например:
from . import call_json
import pytest
LOGIN_CALL = call_json.Login.correct_call
Class TestLogin:
@pytest.fixture
def api_mock(self, caplog):
(api call mock & objects initialized)
def test_correct_login(self, api_mock):
self.mock_api.return_value = (LOGIN_CALL, 200)
# The api call responds with a tuple of (dict, 200)
call_json.py:
class Login:
@property
@staticmethod
def correct_call():
return {code: 0, token: 'tk', ID: 'id'}
Тест не пройден, поскольку LOGIN_CALL возвращает объект свойства вместо словаря.Что я делаю неправильно?
Есть ли более эффективный или питонский способ форматирования call_json.py, чтобы обеспечить легкий доступ к словарям или спискам для многих файлов?