Python3入门(十)——调试与测试
一、异常处理
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入门(十)——调试与测试的更多相关文章
- 11 . Python3之异常,调试和测试
12.Python3入门之异常.调试和测试 在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修 ...
- Python魔术世界 1 如何使用Visual Studio在WIN10中一键安装Python3入门编程环境并测试Django
本文通过VS安装Python和Django的环境,创建了一个Web程序,前后5分钟的操作,让你快速入门Python的编程世界,各种Python和Django的概念会在实战中给你娓娓道来. Django ...
- 转 Python3 错误和异常/ Python学习之错误调试和测试
########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...
- Python3入门机器学习经典算法与应用
<Python3入门机器学习经典算法与应用> 章节第1章 欢迎来到 Python3 玩转机器学习1-1 什么是机器学习1-2 课程涵盖的内容和理念1-3 课程所使用的主要技术栈第2章 机器 ...
- Python3入门机器学习经典算法与应用☝☝☝
Python3入门机器学习经典算法与应用 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 使用新版python3语言和流行的scikit-learn框架,算法与 ...
- python3入门之类
在面向对象的语言中,类是最重要的一环,python自然拥有类这个机制.python的类机制,与C++,java的区别不是很大,类的大多数的重要特性都被沿用了,一样可以多态,抽象,封装: python3 ...
- python3入门之函数
相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...
- Spring入门(十四):Spring MVC控制器的2种测试方法
作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环 ...
- 网络编程懒人入门(十):一泡尿的时间,快速读懂QUIC协议
1.TCP协议到底怎么了? 现时的互联网应用中,Web平台(准确地说是基于HTTP及其延伸协议的客户端/服务器应用)的数据传输都基于 TCP 协议. 但TCP 协议在创建连接之前需要进行三次握手(如下 ...
- RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用
最近几天在看RabbitMQ,所以发了两天时间写了一个调试和测试工具.方便使用. 下载地址:RabbitMQTool-V1.0.1.zip
随机推荐
- Jquery 清除空白字符
$.grep(“jQuery数组”, function(n) { return $.trim(n).length > 0; }); /*仅过滤空数组,不过滤相同数组*/
- mongodb基础环境搭建
一.准备工具 (1)mongodb(https://www.mongodb.com/dr/fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus- ...
- Java 装饰器模式详解
转载请注明出处:http://blog.csdn.net/zhaoyanjun6/article/details/56488020 前言 在上面的几篇文章中,着重介绍了Java 中常见的 IO 相关知 ...
- 使用angular-cli脚手架快速搭建项目
第一步 安装全局的angular-cli, npm install -g @angular/cli 或者 cnpm install -g @angular/cli@v1.0.0-rc.2 – 国内淘宝 ...
- Python基础一数据类型之数字类型
摘要: python基础一中提到了数据类型,这里主要讲解的是数字类型. 数字类型: 1,整型 2,长整型 3,浮点型 4,复数型 1,整型(int) 定义a = 1 通过type函数查看数据类型,整型 ...
- Linux中 /proc/[pid] 目录各文件简析
Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系 ...
- python os模块 遍历目录
#os #os ->tree命令 import os #递归 #目录 ->文件,文件夹 -> 文件文件夹 dirpath = input('请输入你要遍历的目录\n') def ge ...
- CentOS7中部署Showdoc
目录 CentOS7中部署Showdoc 前置环境 部署 配置文件 解压安装包 添加启动服务 设置权限 运行安装 界面 CentOS7中部署Showdoc 文:铁乐与猫 前置环境 因为showdoc其 ...
- unbuntu 安装python包提示E: Unable to locate package python-timeout
今天本想着在unbuntu环境下安装python的一个包,安装了几次都提示 E: Unable to locate package python-timeout 查阅了一些信息才知道,原来是一些软件源 ...
- 关于ORA-00257: archiver error. Connect internal only, until freed 错误处理方法
产生原因:出现ORA-00257错误(空间不足错误),通过查找资料,绝大部分说这是由于归档日志太多,占用了全部的硬盘剩余空间导致的,通过简单删除日志或加大存储空间就能够解决 解决办法:(亲测有效) 1 ...