python 代码测试中输出错误信息的方法

python 输出错误信息的方法

1、try -except + raise:

​ 最为常见的捕捉错误信息形式,其中有try - except, try - except-finally, raise格式

(1)try-except:

​ 语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理,如果你不想在异常发生时结束你的程序,只需在try里捕获它。

 try:
     self.cursor.execute(select_plan_info_sql, params)
     for x in self.cursor.fetchall():
         plan.append({     
         })
 except DatabaseError as ex:
     app_log.error("database error: %s, sql: %s, traceback: %s",
                   ex, self.cursor.statement, traceback.format_exc())
(2)try-finally + try-except-finally:

​ finally 语句无论是否发生异常都将执行最后的代码。

try:
    f1 = open("test.txt","rU")
    for i in f1:
        i=i.strip()
        print(i)
except Exception as E_results:
    print("捕捉有异常:",E_results)
finally: #finally的代码是肯定执行的,不管是否有异常,但是finally语块是可选的。
    f1.close
    print("我不管,我肯定要执行。")
(3)raise(抛出错误)

​ 我们也可以自己定义错误类型,遇到自认为是错误情况时,抛出错误实例。用raise语句可以将一个错误实例抛出。

# 实例1
def fn(s):
    n = s
    if n == 0:
        raise MyError('invalid value: %s' % s)
    return 9 / n

fn(0)

# 实例2
try:
     self.cursor.execute(select_plan_info_sql, params)
     for x in self.cursor.fetchall():
         plan.append({     
         })
 except DatabaseError as ex:
     app_log.error("database error: %s, sql: %s, traceback: %s",
                   ex, self.cursor.statement, traceback.format_exc())
     raise HTTPError(500)
raise 和 try 的区别:

​ raise语句负责抛出错误信息,而try语句负责检查是否有错误信息并捕获信息。若没有try语句,那么错误信息就要让python的解释器来处理。

raise可以转换错误类型:

​ raise语句也可以不带参数,此时按原错误信息抛出。此外,在except中raise一个Error,还可以把一种类型的错误转化成另一种类型

try:
    10 / 0
except ZeroDivisionError:
    raise ValueError('input error!')
2、self参数:

​ 在Python类中规定,函数的第一个参数是实例对象本身,并且约定俗成,把其名字写为self。其作用相当于java中的this,表示当前类的对象,可以调用当前类中的属性和方法。

​ self中存在一个self.fail方法,即当输入的情况不符合时,将会使用self.fail(message=u"message")

​ 注:u是unicode格式,表示有中文字符时候将自动转换成中文,否则将以unicode形式输出

def put(self):
    app_id = self.get_argument("app_id").strip()
    if not app_id:
        self.fail(message="Invalid app_id")
    self.cache.sadd(settings.ALLOWED_APPS_KEY, app_id)
    self.success()
3、return tuple:

​ 当在测试中有多个情况多个值,并且在另一个方法中调用这些情况的时候,可以考虑使用这种方法,减少代码量

def int_cond_judge(temp_para, para, list_num):
     if list_num is None:
         list_num = []

     if not temp_para:
         return None, "{} is empty".format(para)

     if isinstance(temp_para, (unicode, str)) and not temp_para.isdigit():
         return None, "{} format is wrong".format(para)

     temp_para = int(temp_para)

     if list_num and temp_para not in list_num:
         return None, "{} is out of range".format(para)

     return temp_para, None

#	上一步中各个情况的return返回值为tuple
def return_value(self, temp_para, para, list_num=None):
     value, msg = int_cond_judge(temp_para, para, list_num)
     if msg:
         self.fail(message=msg)
     return value
4、list里面加入错误信息:

​ (函数内部引用加值)

5、断言:

​ 这个方法一般使用在测试中,

​ self.assertEqual(a, b),如果a和b不相等(输出为false),则自动抛出异常

#   list
json_list = requests.get(self.url_list, self.params).json()
self.assertEqual(json_list['status'], 0)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值