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

如何用Mock让所有argparse选项属性返回False,无需逐一枚举?

优雅创建默认返回False的Mock参数对象

针对你的需求,有两种简洁的实现方式,无需手动枚举所有选项:

方法一:自定义极简Mock类

直接写一个简单的类,重写__getattr__方法,让任意未定义的属性访问都返回False:

class MockArgs:
    def __getattr__(self, attr):
        return False

def test_something():
    a = A(MockArgs())
    # 后续测试逻辑

不管你的argparse有多少个store_true选项,这个类都能自动返回False,完全不用关心具体选项名称。

方法二:用argparse生成真实默认参数

如果希望用和生产环境一致的真实args对象,而不是Mock类,可以直接调用argparse解析空参数列表,得到所有选项都为默认值(store_true的默认就是False):

def test_something():
    # 复用你的argparse定义,或者直接在这里重新定义
    p = argparse.ArgumentParser()
    p.add_argument("--option1", action="store_true")
    p.add_argument("--option2", action="store_true")
    # 解析空列表,得到所有选项都是默认的False
    args = p.parse_args([])
    a = A(args)
    # 后续测试逻辑

这种方式的优势是完全模拟真实场景,避免Mock对象可能带来的不一致问题,同时自动同步所有argparse选项的默认值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:20:43