51Testing软件测试论坛

标题: python断言异常处理 [打印本页]

作者: 黑盒测试    时间: 2017-10-11 15:11
标题: python断言异常处理
python断言异常处理

一个用例需要可能会断言多个地方,如果第一个地方断言失败了,后面的几个地方就不去断言了,这样如何处理,用异常处理吗?如何去写?

结果:
{'resultCode': 3, 'body': '', 'errMsg': '验证码错误'}

断言1  失败的
self.assertEqual(r.json()['resultCode'],1)
断言2 没有执行并未做断言
self.assertEqual(r.json()['errMsg'],'验证码错')



作者: 神仙也考试    时间: 2017-10-11 15:51
不知道是否可以用,或许可以试试这种方法呗。


try:
    断言语句
except:
    抛异常
finally:
    结束
作者: zhuliu    时间: 2017-10-11 17:22
想法很好。不过你不能写多个test方法吗?不然报告也很难看。
作者: Real_小T    时间: 2017-10-12 10:21
想不让错误抛出 就去捕获它 这样就能继续运行下去了 python写法是try except
作者: 黑盒测试    时间: 2017-10-12 14:37
zhuliu 发表于 2017-10-11 17:22
想法很好。不过你不能写多个test方法吗?不然报告也很难看。

一个test用例也有可能断言2次,第1次断言失败了,第2次断言就不执行了吧?然后如何处理呢?

我是用的ddt  同样的方法会重复执行多次,不需要写多个test
import unittest
import requests,json,time
import ddt
from ddt import data,unpack
import xlrd,xlwt,json,excel
import excel
@ddt.ddt
class Test(unittest.TestCase):
        '''登录'''
        data=excel.excel_data('登录')
        def setUp(self):
                pass
        def tearDown(self):
                pass
        @ddt.data(*data)
        @ddt.unpack
        def test_login(self,name,case,url,headers,data,respone):#封装登录函数
                r=requests.post(url=url,headers=eval(headers),data=eval(data))
                print(r.json())
               
                self.assertEqual(r.json()['resultCode'],3)
                print(1)
                self.assertEqual(r.json()['errMsg'],'验证码错误')
               
if __name__=='__main__':
        unittest.main()
作者: 黑盒测试    时间: 2017-10-12 14:41
Real_小T 发表于 2017-10-12 10:21
想不让错误抛出 就去捕获它 这样就能继续运行下去了 python写法是try except

如果断言1失败,捕捉了异常继续进行断言2,测试报告断言1会显示成功的吗?
作者: 黑盒测试    时间: 2017-10-12 14:41
神仙也考试 发表于 2017-10-11 15:51
不知道是否可以用,或许可以试试这种方法呗。

试了可以

如果断言1失败了,捕捉了异常继续进行断言2,测试报告里面断言1会显示成功的吗?
作者: Real_小T    时间: 2017-10-13 09:17
黑盒测试 发表于 2017-10-12 14:41
如果断言1失败,捕捉了异常继续进行断言2,测试报告断言1会显示成功的吗?

会啊 捕获就意味着无视错误了
作者: 黑盒测试    时间: 2017-10-13 13:54
Real_小T 发表于 2017-10-13 09:17
会啊 捕获就意味着无视错误了

那不行啊   断言1失败 捕捉了异常 测试报告就显示了成功,那测试报告不就没作用了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2