一、异常处理

  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('')
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配置,后续进阶篇补充

  在Pycharm中断点调试与IDEA一样,同家族产品

  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,这里暂不赘述

Python3入门(十)——调试与测试的更多相关文章

  1. 11 . Python3之异常,调试和测试

    12.Python3入门之异常.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修 ...

  2. Python魔术世界 1 如何使用Visual Studio在WIN10中一键安装Python3入门编程环境并测试Django

    本文通过VS安装Python和Django的环境,创建了一个Web程序,前后5分钟的操作,让你快速入门Python的编程世界,各种Python和Django的概念会在实战中给你娓娓道来. Django ...

  3. 转 Python3 错误和异常/ Python学习之错误调试和测试

    ########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...

  4. Python3入门机器学习经典算法与应用

    <Python3入门机器学习经典算法与应用> 章节第1章 欢迎来到 Python3 玩转机器学习1-1 什么是机器学习1-2 课程涵盖的内容和理念1-3 课程所使用的主要技术栈第2章 机器 ...

  5. Python3入门机器学习经典算法与应用☝☝☝

    Python3入门机器学习经典算法与应用 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 使用新版python3语言和流行的scikit-learn框架,算法与 ...

  6. python3入门之类

    在面向对象的语言中,类是最重要的一环,python自然拥有类这个机制.python的类机制,与C++,java的区别不是很大,类的大多数的重要特性都被沿用了,一样可以多态,抽象,封装: python3 ...

  7. python3入门之函数

    相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...

  8. Spring入门(十四):Spring MVC控制器的2种测试方法

    作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环 ...

  9. 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议

    1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...

  10. RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用

    最近几天在看RabbitMQ,所以发了两天时间写了一个调试和测试工具.方便使用. 下载地址:RabbitMQTool-V1.0.1.zip

随机推荐

  1. Salesforce中如何删除调试日志

    大家在新建一个用户跟踪标记的时候可能会遇到以下报错:调试日志已经超过了上限,在编辑跟踪标志前,删除一些调试日志.但是在点击“全部删除”按钮删除所有可见的日志后,还是报同样的错误,这时候,我们打开开发者 ...

  2. ebook

    libgen.io onlybooks.org www.ebook3000.com www.foxebook.net

  3. 接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)

    基于python实现的http+json协议接口自动化测试框架(实用改进版)   by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436     目录 1.      ...

  4. [Android] 仿照 Last App Switcher 写的小程序

      在Android众多工具类app中,Last App Switcher绝对算是一个让人用过就不会卸载的工具.LAS这个应用,它的功能很简单,就是通过一个浮动按钮实现在两个应用之间一键切换,但是非常 ...

  5. Pycharm代码补齐功能中的图标的意思

    分清楚图标的意思就能更好的使用对应的方法.类,避免错误使用括号 PS:博主老是给属性方法加上括号   代表方法: 红色的m.f,   代表类变量: 黄色的f     之前遇到个属性方法: 好像是p,无 ...

  6. Hibernate 拦截器

    拦截器 你已经学到,在 Hibernate 中,一个对象将被创建和保持.一旦对象已经被修改,它必须被保存到数据库里.这个过程持续直到下一次对象被需要,它将被从持久的存储中加载. 因此一个对象通过它生命 ...

  7. excel文件使用navicat工具导入mysql的方法

    1.在excel文件的sheet上,第1行下面插入一行,对应DB里面的字段名称,方便后面导入时做字段匹配: 2.使用Navicat ,打开工具,选择表所在的数据库,然后点击数据库名字,右键Tables ...

  8. jquery.validate,错误信息位置

    好长时间没有用jquery.validate.js这个插件了,忘得差不多了.唉,好东西还是要经常拿出来看看的,今天用jquery.validate来做一个小东西,遇到一个问题,就是错误提示信息的位置问 ...

  9. Unity[C#] Reflection Use

      Reflection Reflection是C#程序员的一个最有力工具 最常用的例子来说明反射的用处是一个插件系统.假设你正在创建一个 接受用户创建 的扩展程序,有没有办法预先知道哪些方法这个扩展 ...

  10. Python学习--Selenium模块简单介绍(1)

    简介及运行流程 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozi ...