Приспособление Pytest не запускается x раз с заданными параметрамиPython

Программы на Python
Ответить
Anonymous
 Приспособление Pytest не запускается x раз с заданными параметрами

Сообщение Anonymous »

У меня есть следующее приспособление pytest (которое также использует другие приспособления в качестве параметров), которое использует клиент dynamodb для размещения элементов заказа:

Код: Выделить всё

@pytest.fixture(scope="function")
def function_order(request, dynamodb_client, cleanup_orders):
delivery_date = "01-01-2022"
if hasattr(request, "param"):
delivery_date = request.param.get("delivery_date")

order_id = f"ORDER-{str(uuid.uuid4())}"

records = [
{
"order_id": {"S": order_id},
"delivery_date": {"S": delivery_date},
}
]

for record in records:
dynamodb_client.put_item(
TableName="orders",
Item=record,
)

cleanup_orders.append(order_id)

return {"order_id": order_id, "records": records}
У меня также есть определенный интеграционный тест, который определяет параметры для отправки в мое устройство: function_order. Эта конечная точка должна возвращать 400 при достижении конечной точки моего почтового заказа. Он должен вернуть 400 в случае попытки разместить третий заказ на указанную дату доставки. Другими словами, если у меня уже есть два заказа с датой доставки 12.12.2024, третья попытка разместить заказ до этой даты должна быть некорректным запросом.

Код: Выделить всё

@pytest.mark.parametrize(
"function_order",
[
{"delivery_date": "12-12-2024"},
{"delivery_date": "12-12-2024"},
],
indirect=True,
)
def test_post_v1_orders_exceeds_order_limit_returns_400(
request_helper, function_order
):
delivery_date = "12-12-2024"
response = request_helper.post(
"/v1/orders",
body=order.order_record(delivery_date=delivery_date),
)
assert response.status_code == 400
assert (
response.json().get("error")
== f"Order limit exceeded for date: {delivery_date}. Max orders: 2"
)
Проблема в том, что фикстура function_order выполняется только один раз, когда одна и та же дата доставки используется в качестве параметра дважды. Однако если я укажу другую дату доставки в качестве параметра, он будет выполнен в два раза дольше, чем ожидалось. Почему это происходит и как я могу заставить мой прибор выполняться дважды, даже если в обоих вызовах используются одни и те же параметры?

Подробнее здесь: https://stackoverflow.com/questions/792 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»