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

Python get_account_value函数返回条件未按预期运行修复方法

问题说明

现有函数用于根据传入的标签字典为AWS实例添加附加标签,预期运行逻辑如下:

  • 当传入的客户ID(customer_id)数量大于1时,函数返回shared
  • 标签无Account字段、或Account字段值与传入客户ID一致时,返回传入的客户ID
  • 标签Account字段值与传入客户ID不一致时,返回shared

当前运行异常:单元测试传入包含2个元素的客户ID列表时,函数直接返回了该列表,未按预期返回shared,触发断言失败。

相关代码与报错

原业务函数

def get_account_value(tags, customer_id):
    
    if not tags:
        return customer_id

    tag_value = tags.get("Account")

    return customer_id if not tag_value or tag_value == customer_id else "shared"

对应单元测试

def test_get_account_value_customer_list():

    TAGS_NO_VALUE = {'foo':'bar'}
    TEST_CUSTOMER_ID_LIST = ["test_customer_id1", "test_customer_id2"]
    
    response = tagging.get_account_value(TAGS_NO_VALUE, TEST_CUSTOMER_ID_LIST)
    
    assert response == "shared"

单元测试报错信息

AssertionError: assert ['test_client_id1', 'test_client_id2'] == 'shared'
根因分析

原函数逻辑缺失了对customer_id参数本身的多值判断:测试用例中传入的标签字典没有Account键,tag_value取到None,触发not tag_value的判断条件,直接将传入的列表类型customer_id返回,完全没有处理多客户ID的场景。

修复方案

在函数入口增加多客户ID的判断逻辑,只要传入的customer_id是长度大于1的列表,直接返回shared,修复后代码如下:

def get_account_value(tags, customer_id):
    # 多客户ID场景直接返回shared
    if isinstance(customer_id, list) and len(customer_id) > 1:
        return "shared"

    if not tags:
        return customer_id

    tag_value = tags.get("Account")

    return customer_id if not tag_value or tag_value == customer_id else "shared"

修复后重新执行单元测试,函数会命中入口的多值判断逻辑返回shared,断言可以正常通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:16:01