热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python3入门(十)——调试与测试

一、异常处理1.tryexceptfinally这个也就是Java里的trycath..finally了,直接看经典代码:try:p

一、异常处理

  1.try...except...finally...

    这个也就是Java里的try...cath..finally...了,直接看经典代码:

 

try: print("开始执行try...") s = 1 / 0 print("计算结果是%s" % s) except ZeroDivisionError as e: print("异常为:", e) finally: print("执行finally...") print("END...")

 

    处理结果和意料是一样的:

开始执行try...
异常为: division by zero
执行finally...
END...

    同样,可以并列捕捉多个异常:(此外在except后还可以接else:来处理没有异常)

except ValueError as e: print('ValueError:', e) except ZeroDivisionError as e: print('ZeroDivisionError:', e)

    当然,以上的异常都是继承自BaseException(也就是Java的Exception啦.)

  Python也不像Java一样,有时候强迫你去在出异常的地方捕获或抛出,只需要在调用的地方处理即可:

def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2

def main(): try: bar('0') except Exception as e: print('Error:', e) finally: print('finally...')

 

    2.记录错误

      使用python内置的Logging模块即可

import logging try: print("开始执行try...") s = 1 / 0 print("计算结果是%s" % s) except ZeroDivisionError as e: logging.exception(e) finally: print("执行finally...") print("END...")

    后面logging还可以通过文件进行记录,和Java的Log4j是一样的

    3.抛出错误

      通过raise关键字实现和Java一样的throw功能了

class MyException(ValueError): pass


def my_ex(): n = input("输入") if n == 0: raise MyException("输入错误,错误的值为%s" % n) return n + 1

二、程序调试

  1.print

    万能的print,也就是Java的sout了。当然,这也仅仅是第一招了。也是新手常用的招了

  2.断言

    所有print()的地方都可以用断言assert来替代,print的小改版:

  n = int(s) assert n != 0, 'n is zero!'
    return 10 / n

  3.logging

    对应log4j的贴心配置

import logging logging.basicConfig(level=logging.INFO) def my_ex(): n = input("输入") if n == 0: logging.info("INFO日志,变量n为:%s" % n) return n + 1

  更多logging配置,后续进阶篇补充

  4.pdb

    这是python内置的调试器。当然了。这里当然使用熟悉的Pycharm了

三、单元测试

  一个经典的单元测试如下:

import unittest class MyTest(unittest.TestCase): def setUp(self): print("setup...") # 以test开头的test_xx的就是测试方法
    def test_key(self): d = dict() d['k'] = "value" self.assertEqual(d['k'], "value") def tearDown(self): print("tearDown...")

   首先,单元测试类需要继承自unittest.TestCase

  其次,以test_开头的的方法就是测试方法了,其中最常用的就是assertEqual来进行判断

  再者,setUp,tearDown就相当于Java单元测试的Before和After了

四、文档测试

  python中内置的doctest,这里暂不赘述

 

 


推荐阅读
author-avatar
249126059_a32331
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有