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

能否在单个assertIn语句中设置多条件同时校验多个目标值存在

问题解答

原生unittest.TestCase.assertIn方法无法直接在单条语句中完成多成员的包含校验,该方法的参数设计仅支持单次传入1个待检查成员,方法签名为:

assertIn(member, container, msg=None)

如果要完成两个字符串同时存在于body的校验,有两种常用实现方式:

  • 单断言语句实现(满足单条断言完成校验的需求)
    借助all()函数搭配生成器表达式,传入assertTrue即可实现单条断言校验所有目标值,只要有任意一个关键词不存在于body中,就会触发你定义的错误提示:
    self.assertTrue(
        all(item in body for item in ('dns', 'dns_cache_expire_time')),
        'Querying failed'
    )
    
  • 常规推荐写法(可精准定位缺失字段)
    如果没有强制要求必须使用单条assertIn语句,更推荐分开写两次assertIn,哪个字段缺失会直接在对应断言行抛出错误,排查问题效率更高:
    self.assertIn('dns', body, 'Querying failed: missing dns field')
    self.assertIn('dns_cache_expire_time', body, 'Querying failed: missing dns cache expire time field')
    

注意:不要尝试给assertIn第一个参数直接传元组/列表形式的待检查值实现多条件判断,这种写法会变成校验「整个待检查列表/元组」是否是body的成员,而非校验列表里的每个元素都在body中,会出现逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:57:17