Как работать со вложенностями в pydantic?
Я проводила тест данного JSON https://reqres.in/api/users?page=2 и у меня вылезает данная ошибка:(IndexError: tuple index out of range)
Я искала решение, задавала кучу вопросов, но так и не смогла решить эту проблему, сейчас я покажу свой код.
Составленная мной pydantic модель:
from pydantic import BaseModel
class Suport(BaseModel):
url: str
text: str
class Users(BaseModel):
id: int
email: str
first_name: str
last_name: str
avatar: str
class Post(BaseModel):
page: int
per_page: int
total: int
total_pages: int
data: list[Users]
support: dict[Suport]
Класс с валидацией и проверкой статуса кода:
import global_enus
from post import Post
from pydantic import parse_obj_as
class Responce:
def __init__(self, responce):
self.responce = responce
self.responce_json = responce.json()
self.responce_status = responce.status_code
def validate(self):
if isinstance (self.responce_json, list):
parse_obj_as(list[Post], self.responce_json)
else:
parse_obj_as(list[Post], self.responce_json)
return self
def assert_status_code(self, status_code):
if isinstance(self.responce_status, list):
assert status_code in self.responce_status, global_enus.error_message.WRONG_CODE
else:
assert status_code == self.responce_status, global_enus.error_message.WRONG_CODE
Мой мейн файл, в котором и происходит тест:
import requests
from responce_classes import Responce
from configuration import SERVICE_URL
def test_getting_post():
r = requests.get(url=SERVICE_URL)
responce = Responce(r)
responce.assert_status_code(200)
responce.validate()
Ошибка возникает именно при валидации, то есть, когда я отрабатываю тест только на проверку статус кода он всё отрабатывает. Суть вопроса в следующем: как в pydantic работать с ситуацией когда значение это словарь или другой список? Помогите, пожалуйста, разобраться с данной проблемой, а то на всём белом свете я так и не нашла ответа.