首页 > 解决方案 > 属性函数返回属性对象而不是值

问题描述

我的代码中的属性方法有问题。我正在建立一个图书馆,我正在为它做测试。部分测试是确保库正确处理 json api 响应。我有大量的 json 响应,我将它们合并到一个文件中,我想在测试中引用这些响应。我的第一个想法是创建单独的类和属性函数,为每个调用返回 json。理想情况下,我想做这些staticmethodsclassmethods这样我就不必实例化对象。即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 返回属性对象而不是字典。我究竟做错了什么?

是否有更有效或 Pythonic 的方式来格式化 call_json.py 以允许跨多个文件轻松访问字典或列表?

标签: pythonpropertiesstatic-methodsclass-method

解决方案


推荐阅读