我的代码中的属性方法有问题。我正在建立一个库,并为此进行测试。测试的一部分是确保库正确处理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返回的是属性对象而不是字典。我究竟做错了什么?
是否存在更有效或更Python化的格式来格式化call_json.py以允许在许多文件中轻松访问字典或列表?