`
linkyou66
  • 浏览: 228565 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

python assert dict 断言@对比@之递归断言

 
阅读更多
<p>在测试工作中经常要对两个dict进行校验,而且dict可能是多层嵌套的,为此写了个递归函数。工作方便多了</p>
<p>代码如下</p>
<p>知识点:递归函数中必须有全局变量(C++中传引用的变量),所以在python中使用字典来保存每次递归结果</p>
<p>如例子中的dicresult.</p>
<p></p>
<p>#递归函数<br>
def _assertdict(expobj=None,actobj=None,dicresult=None,key=None):<br>
spacestr = " "<br>
bresult = dicresult['result']<br>
if (type(actobj) != type(expobj)):<br>
tempstr = "actobj's type not equal expobj's type and actobj's type is %s expobj's type is %s"%(type(actobj),type(expobj))<br>
bresult = bresult and False<br>
dicresult['result'] = bresult<br>
dicresult['logstr'] = dicresult['logstr'] + '/n' + tempstr<br>
if (type(actobj) == dict) and (type(expobj) == dict):<br>
for e in actobj:<br>
a_dict = actobj[e]<br>
if e in expobj:<br>
e_dict = expobj[e]<br>
_assertdict(a_dict,e_dict,dicresult,e)<br>
else:<br>
tempstr = spacestr + "not find sub dict key is",e<br>
bresult = bresult and False<br>
dicresult['result'] = bresult<br>
dicresult['logstr'] = dicresult['logstr'] + '/n' + tempstr<br>
elif(type(actobj) == list) and (type(expobj) == list):<br>
if len(actobj) != len(expobj):<br>
tempstr = spacestr + " key%s's len is not equal"%(key)<br>
bresult = bresult and False<br>
dicresult['result'] = bresult<br>
dicresult['logstr'] = dicresult['logstr'] + '/n' + tempstr<br>
return<br><br>
for i in range(len(actobj)):<br>
a_list = actobj[i]</p>
<p>
e_list = expobj[i]<br>
if a_list != a_list:<br>
tempstr = spacestr + " key:%s[%d]'s value is not equal"%(key,i)<br>
dicresult['logstr'] = dicresult['logstr'] + '/n' + tempstr<br>
_assertdict(a_list,e_list,dicresult,key+'[%d]'%i) <br>
else:<br>
if actobj == expobj:<br>
bresult = bresult and True<br>
dicresult['result'] = bresult<br>
else:<br>
if key!=None:<br>
tempstr = spacestr + "assert key: %s error and act value is %s and exp value is %s"%(key,actobj,expobj)<br>
dicresult['logstr'] = dicresult['logstr'] + '/n' + tempstr<br>
bresult = bresult and False<br>
dicresult['result'] = bresult</p>
<p></p>
<p>调用封装的函数</p>
<p>def assertdict(params,expobj=None,actobj=None,msg=None):<br>
dicresult = {}<br>
dicresult['logstr'] = ""<br>
dicresult['result'] = True<br>
_assertdict(expobj,actobj,dicresult)<br>
print dicresult<br>
if dicresult['result']:<br>
asserttrue(params,"assert dict success" + dicresult['logstr'],msg) //框架自带的断言函数,可忽略<br>
else:<br>
assertfalse(params,"assert dict failed" + dicresult['logstr'],msg) //框架自带的断言函数,可忽略</p>
<p></p>
<p></p>
分享到:
评论

相关推荐

    python assert的用处示例详解

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要...

    Python assert (断言) 基本用法

    【用途】:断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。 【语法】: assert [removed]表达式) ...

    python3 assert 断言的使用详解 (区别于python2)

    今天小编就为大家分享一篇python3 assert 断言的使用详解 (区别于python2),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    Python3 assert断言实现原理解析

    主要介绍了Python3 assert断言实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    业务异常提示处理 springboot+Assert(自定义断言)

    使用springboot框架快速搭建,封装自定义断言做业务校验,公共异常处理打印日志, 更简单的业务判断处理

    1-assert(断言).pdf

    1-assert(断言).pdf

    python-断言方式.docx

    python 断言方式 Python 断言方式 在 Python 中,断言是一种用于检查代码是否按照预期执行的方法。它是一种用于测试代码的工具,可以帮助开发人员在代码中发现错误和问题。断言是一种简单而有效的方法,可以在代码中...

    delayed-assert:延迟又名。 python的软断言

    Python延迟断言延迟又名。 python的软断言几个功能: - No Dependenices on any other framework/library.- Should work with any testing framework.- Can be use as decorator or context manager.安装通过点子...

    python-断言方式(1).docx

    python 断言方式 Python 断言方式 在 Python 中,断言是一种用于检查代码是否按照预期执行的方法。它是一种用于测试代码的工具,可以帮助开发人员在代码中发现错误和问题。断言是一种简单而有效的方法,可以在代码中...

    Python断言assert的用法代码解析

    python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假。 可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。 assert的语法格式: assert expression 它...

    VC中如何使用ASSERT断言

    VC中如何使用ASSERT断言 VC中如何使用ASSERT断言

    深入探讨C++中的引用和ASSERT断言

    深入探讨C++中的引用和ASSERT断言,对引用和断言的理解会有很大的帮助

    python中断言的用法(1).docx

    python中断言的用法 Python中断言的用法 Python中断言是一种用于检查代码中假设的正确性的方法。它是一种用于在代码中检查错误的工具,可以帮助程序员在代码中发现错误并及时修复。在Python中,断言是一个关键字,...

    Python assert关键字原理及实例解析

    Python assert(断言)用于判断一个表达式,在表达式条件为 False 的时候触发异常。 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。 语法格式: assert expression 等价...

    python中断言的用法.docx

    下面是一个简单的例子,用于检查一个数是否为正数: ``` def positive_number(num): assert num &gt; 0, "Number must be positive" return num ``` python中断言的用法全文共2页,当前为第1页。 在这个例子中,如果...

    python: 判断tuple、list、dict是否为空的方法

    Test tuple_test = () ...以上这篇python: 判断tuple、list、dict是否为空的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:pytho

    Python assert语句的简单使用示例

    主要给大家介绍了关于Python assert语句的简单使用,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

Global site tag (gtag.js) - Google Analytics