You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

主文件与测试文件调用Tequila API返回结果不一致求助

主文件与测试文件调用Tequila API返回结果不一致问题

背景

正在进行API开发,项目核心功能:

  • 从谷歌表格读取IATA机场代码(此部分运行正常)
  • 向Tequila API(端点:https://api.tequila.kiwi.com)发送GET请求,获取明日起至6个月内的最便宜航班。

问题表现

主文件与测试文件使用相同参数调用API时,返回结果存在差异:

  • 主文件保留"ret_dtime_from": "16:00"参数时,返回结果为空;移除该参数后,可获取到2023年2月3日出发、2月5日返回,HKT至SIN起飞时间为09:00AM的航班。
  • 测试文件使用包含"ret_dtime_from": "16:00"的参数,能正常获取到对应2023年2月3日出发、2月5日返回,HKT至SIN起飞时间为16:15的航班数据。

代码片段

主文件简化代码

tomorrow = (datetime.today() + timedelta(1)).strftime("%d/%m/%Y")
six_months_date = (datetime.today() + timedelta(weeks=24)).strftime("%d/%m/%Y")

parameter_WE = {
    "fly_from": "SIN",
    "fly_to": "",
    "date_from": tomorrow,
    "date_to": six_months_date,
    "nights_in_dst_from": 2,
    "nights_in_dst_to": 2,
    "max_fly_duration": 7,
    "flight_type": "round",
    "adults": 1,
    "selected_cabins": "M",
    "adult_hold_bag": "1",
    "partner_market": "sg",
    "curr": "SGD",
    "max_stopovers": 0,
    "vehicle_type": "aircraft",
    "limit": 10,
    "fly_days": "5",
    "dtime_from": "19:00",
    "ret_dtime_from": "16:00"
}

def main(element: list):
    list_result = []
    # element格式为[city, IATAcode, cost]
    if element[1] == "HKT":
        parameter_WE["fly_to"] = element[1]
        response = requests.get(url=URL_BOOKING, headers=self.header_booking, params=parameter_WE)

    if response.json()["data"]:
        data = response.json()["data"][0]
        dict_data = {
            "to": data["flyTo"],
            "price": round(data["fare"]["adults"]),
            "datefrom": f'{data["local_departure"].split("T")[0]} - {data["local_departure"].split("T")[1].split(".")[0][:-3]}',
            "dateto": f'{data["route"][1]["local_departure"].split("T")[0]} - {data["route"][1]["local_departure"].split("T")[1].split(".")[0][:-3]}',
            "airlinefrom": data["route"][0]["airline"],
            "airlinereturn": data["route"][1]["airline"],
        }
        list_result.append(dict_data)

    return list_result

测试文件代码

tomorrow = (datetime.today() + timedelta(1)).strftime("%d/%m/%Y")
six_months_date = (datetime.today() + timedelta(weeks=24)).strftime("%d/%m/%Y")
header_booking = {
    "accept": "application / json",
    "apikey": KEY_BOOKING
}

parameter_WE = {
    "fly_from": "SIN",
    "fly_to": "HKT",
    "date_from": "03/02/2023",
    "date_to": "05/02/2023",
    "nights_in_dst_from": 2,
    "nights_in_dst_to": 2,
    "max_fly_duration": 7,
    "flight_type": "round",
    "adults": 1,
    "selected_cabins": "M",
    "adult_hold_bag": "1",
    "partner_market": "sg",
    "curr": "SGD",
    "max_stopovers": 0,
    "vehicle_type": "aircraft",
    "limit": 10,
    "fly_days": "5",
    "dtime_from": "19:00",
    "ret_dtime_from": "16:00"
}

response = requests.get(url=URL_BOOKING, headers=header_booking, params=parameter_WE)
return response.text

排查与解决方向

  1. 日期范围不一致
    测试文件硬编码了date_from和date_to为"03/02/2023"和"05/02/2023",而主文件使用动态计算的tomorrow和six_months_date。若运行主文件时,动态生成的日期范围不包含测试指定的区间,会导致API返回空结果。
    验证方式:临时将主文件的动态日期替换为测试文件的硬编码值,确认是否能返回数据。若可行,调整动态日期计算逻辑或API参数的日期范围。

  2. 全局参数污染
    主文件中parameter_WE是全局变量,多次调用main函数时,fly_to参数会被重复修改,导致后续请求参数不符合预期。
    解决方式:将parameter_WE的定义移到main函数内部,或每次调用前重新初始化参数字典,避免全局变量污染。示例:

    def main(element: list):
        list_result = []
        # 每次调用重新初始化参数
        parameter_WE = {
            "fly_from": "SIN",
            "fly_to": element[1],
            "date_from": (datetime.today() + timedelta(1)).strftime("%d/%m/%Y"),
            # 其他参数保持不变
        }
        if element[1] == "HKT":
            response = requests.get(url=URL_BOOKING, headers=self.header_booking, params=parameter_WE)
        # 后续逻辑...
    
  3. 请求头差异
    主文件使用self.header_booking,测试文件使用直接定义的header_booking,两者可能存在细微差异(比如测试文件的accept头带有空格:"application / json"),可能影响API返回结果的筛选逻辑。
    解决方式:打印并对比两者的请求头内容,确保完全一致。

  4. 响应筛选逻辑局限
    主文件只取response.json()["data"][0](第一条结果),但API返回结果的排序可能不同,符合条件的航班可能不在第一条位置,导致被遗漏。
    解决方式:在主文件中打印完整的response.json()["data"],查看是否存在符合条件的航班,再调整筛选逻辑。

内容的提问来源于stack exchange,提问作者NickTahmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:25:21