黑盒测试 发表于 2017-10-11 15:11:32

python断言异常处理

python断言异常处理

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

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

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


神仙也考试 发表于 2017-10-11 15:51:21

不知道是否可以用,或许可以试试这种方法呗。


try:
    断言语句
except:
    抛异常
finally:
    结束

zhuliu 发表于 2017-10-11 17:22:21

想法很好。不过你不能写多个test方法吗?不然报告也很难看。

Real_小T 发表于 2017-10-12 10:21:24

想不让错误抛出 就去捕获它 这样就能继续运行下去了 python写法是try except

黑盒测试 发表于 2017-10-12 14:37:48

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:11

Real_小T 发表于 2017-10-12 10:21
想不让错误抛出 就去捕获它 这样就能继续运行下去了 python写法是try except

如果断言1失败,捕捉了异常继续进行断言2,测试报告断言1会显示成功的吗?

黑盒测试 发表于 2017-10-12 14:41:53

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




试了可以

如果断言1失败了,捕捉了异常继续进行断言2,测试报告里面断言1会显示成功的吗?

Real_小T 发表于 2017-10-13 09:17:21

黑盒测试 发表于 2017-10-12 14:41
如果断言1失败,捕捉了异常继续进行断言2,测试报告断言1会显示成功的吗?

会啊 捕获就意味着无视错误了

黑盒测试 发表于 2017-10-13 13:54:58

Real_小T 发表于 2017-10-13 09:17
会啊 捕获就意味着无视错误了

那不行啊   断言1失败 捕捉了异常 测试报告就显示了成功,那测试报告不就没作用了
页: [1]
查看完整版本: python断言异常处理