Генерация тела post запроса на Python
Вводная: есть генератор данных и билдер тела запроса:
from services.generator import generated_passengers_for_notebook
from config import Base
class PostAccountPassengersUpdate:
generated = next(generated_passengers_for_notebook())
def __init__(self, auth_token=None):
self.auth_token = auth_token
self.result = {}
self.passengers_list = []
self.passengers = {}
self.documents = {}
def set_auth_token(self):
self.result["auth_token"] = self.auth_token
return self
def set_passengers_list(self):
self.result["passengers"] = self.passengers_list
return self
def set_passengers(self):
self.passengers_list.append(self.passengers)
return self
def set_passengers_middle_name(self, middle_name=generated.middle_name):
self.passengers["middle_name"] = middle_name
return self
def set_documents(self):
self.passengers["documents"] = self.documents
return self
def set_documents_passport_number(self, passport_number=generated.passport_number):
self.documents["passport_number"] = passport_number
return self
def set_v(self, v=Base.V):
self.result["v"] = v
return self
def build(self):
self.set_auth_token()
self.set_passengers_list()
self.set_passengers()
self.set_passengers_middle_name()
self.set_documents()
self.set_documents_passport_number()
self.set_v()
return self.result
при таком вызове:
body = PostAccountPassengersUpdate().build()
получаю такую структуру:
{
"auth_token": null,
"passengers": [
{
"middle_name": "ГЕРАСИМОВИЧ",
"documents": {
"passport_number": "6941312176"
}
}
],
"v": "2.0"
}
подскажите, пожалуйста, как можно докрутить что бы генерировалось несколько пассажиров в списке passengers в зависимости от какое число передать, например:
body = PostAccountPassengersUpdate().build(2)
результат хотелось:
{
"auth_token": null,
"passengers": [
{
"middle_name": "ГЕРАСИМОВИЧ",
"documents": {
"passport_number": "6941312176"
}
},
{
"middle_name": "ПЕТРОВИЧ",
"documents": {
"passport_number": "4536456374"
}
}
],
"v": "2.0"
}
если сделать так, то все данные дублируются:
def build(self, count):
self.set_auth_token()
self.set_passengers_list()
for i in range(count):
self.set_passengers()
self.set_passengers_middle_name()
self.set_passengers_last_name()
self.set_passengers_first_name()
self.set_passengers_birthday()
self.set_passengers_gender()
self.set_passengers_country()
self.set_documents()
self.set_documents_passport_number()
self.set_documents_passport_expdate()
self.set_documents_document_type()
self.set_v()
return self.result