关于在单元测试中异常处理模块输出测试结果时报错

本贴最后更新于 1617 天前,其中的信息可能已经东海扬尘

image.png

在写单元测试用例的时候,我们将断言包装一层异常处理后,希望输出测试的结果,如图中代码所示,在except中定义了一个TestResult变量,在try/except之后打印测试结果,执行代码报错:
UnboundLocalError: local variable 'TestResult' referenced before assignment

    有道翻译结果大致为:    局部变量未赋值前被引用

    原因:断言成功后,代码会跳过except分支直接执行下面并列的print内容,
              TestResult的赋值是放在except当中,因此未读取到TestResult的值,从而报错

    解决办法:可以分别在try、except里边进行变量赋值,例如在try里面定义TestResult='pass',在except中定义TestResult=‘failed’。
    另外需要注意的是,如果我们希望断言不通过的情况下输出failed,需要注释掉抛出异常的那部分raise e,不然代码抛出异常后就不会接着往下走了。
5 回帖
请输入回帖内容 ...