Pytest参数化Fixture传入相同参数时仅执行一次的问题求助
Pytest参数化Fixture传入相同参数时仅执行一次的问题求助
我有一个pytest fixture(它还依赖其他fixture作为参数),用于通过dynamodb客户端插入Order条目:
@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 fixture传入参数。这个测试的目的是验证:当尝试给某个配送日期创建第三个订单时,post订单接口应该返回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 fixture只执行了一次;但如果传入不同的配送日期,它就会正常执行两次。请问这是为什么?我要怎么让fixture即使在参数相同的情况下也执行两次?
备注:内容来源于stack exchange,提问作者Tony96
相关产品推荐
相关产品推荐

