Python-异常处理try(二)

在Python-异常处理try(一) 中最后我们提到过关于try-except-raise的内容,本篇博客,补充关于raise的一个知识点,Python-异常处理try(一) 的链接如下:
http://blog.csdn.net/weixin_39568072/article/details/78481563
想说一点是,当我们使用unittest结合HTMLTestRunner来输出自动化测试报告的额时候,有一点我给忽略了,当时用raise只是看到了它的一个好处,就是如果有异常,它会抛出异常,并且用例的执行结果会是error。
但是今天我在测试用例中写了一个循环,当循环中间某一个循环出现异常的时候,后面的循环就不会执行了,例如下代码的情况:

#encoding=utf-8

import unittest
import traceback
from HTMLTestRunner import HTMLTestRunner

class Raise(unittest.TestCase):
    def setUp(self):
        pass

    def test01(self):
        for i in range(10):
            try:
                self.assertEqual(i,1,'not equal')
            except Exception,e:
                raise e
            else:
                print 'i == 1'

    def tearDown(self):
        pass

if __name__=='__main__':
    suite=unittest.TestSuite()
    suite.addTest(Raise('test01'))
    with open('HTMLReport.html','w')as fp:
        runner=HTMLTestRunner(stream=fp,title='raise report',description='ajin report',verbosity=2)
        runner.run(suite)

看,我这里的except是和raise联合使用的,我们来看一下报告:
这里写图片描述
我们看到,循环只执行了一次就停住了;
那么,代码改一下,我们再看:

#encoding=utf-8

import unittest
import traceback
from HTMLTestRunner import HTMLTestRunner

class Raise(unittest.TestCase):
    def setUp(self):
        pass

    def test01(self):
        for i in range(10):
            try:
                self.assertEqual(i,1,'not equal')
            except Exception,e:
                print traceback.format_exc()
            else:
                print 'i == 1'

    def tearDown(self):
        pass

if __name__=='__main__':
    suite=unittest.TestSuite()
    suite.addTest(Raise('test01'))
    with open('HTMLReport.html','w')as fp:
        runner=HTMLTestRunner(stream=fp,title='raise report',description='ajin report',verbosity=2)
        runner.run(suite)

改动的地方就是把except中的raise变成了traceback.format_exc(),这样我们看一下报告:
这里写图片描述
下面还有其他的,就不截图了;

所以,我们可以看到,raise抛出异常后,后面的代码就强行停止了,所以,要是testCase中有循环的话,为了不使异常中断循环,我们要用except-traceback.format_exc(),这样既可以打印出来报错信息,也可以不中断循环!!!!
就是有一点要操心,计时testCase的try中捕获了异常,但是报告中的结果会显示pass,而不是error,所以看报告的时候要打开报告看一下详细信息,不要被执行结果欺骗!!

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值