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
随机推荐
- [基础知识]在PeopleSoft中SMTP设置不生效如何查找问题
在PeopleSoft中如果配置了工作流邮件或者标准页面的通知,都是可以发送出邮件的,这些邮件都是由SMTP服务器发送.SMTP需要在APP服务器和PRCS服务器中配置. 如果无法从PeopleSof ...
- 活字格Web应用平台学习笔记 6 - 使用公式
发现学起来其实也花不了多少时间.继续学习下一节课:使用公式. 这应该会是高级一点的操作了吧,前面的几节课真是好简单好简单,简单到怀疑这是不是个技术人员该干的活,简单到怀疑人生~~ 这节课的目标: 好吧 ...
- javascript的异步编程解决方案收集
缘起 没理解js异步的同学看下面的例子: for (var i = 0; i < 5; i++) { //模拟一个异步操作 setTimeout(() => { console.log(i ...
- 本地用maven搭建SpringMvc+redis集成
---恢复内容开始--- 首先本地需要搭建私服,简单说一下搭建私服的步骤 1.为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而 ...
- ECMAScript5新特性总结
虽然ECMAScript5早就成为标准推出来了,但之前因为一直用的是ECMAScript3,并且工作中总是要求兼容IE的低版本,所以用的比较少.如今市场上大多数浏览器都能兼容ECMAScript5(I ...
- Android aapt 工具介绍(转)
目录 AAPT 工具介绍 AAPT 的帮助信息 查看AAPT的版本 使用AAPT列出资源包apk文件列表 使用AAPT打包资源文件 使用AAPT解压资源包apk 来自:http://mmmyddd ...
- “由于这台计算机没有终端服务器客户端访问许可证”解决方案
由于windows2003默认仅支持2个终端用户的登陆.当"终端连接超出了最大连接"的情况出现导致不能登录. 1.在另外一台Windows2003的机器上运行"tsmmc ...
- CREATE INDEX (Transact-SQL) 语法 (转载)
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON <object> ( column [ ASC | D ...
- Visual Basic 6.0(VB6.0)详细安装过程
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用. 特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如 ...
- JList动态添加元素
JList动态添加元素 http://www.cnblogs.com/tianguook/archive/2012/01/31/2333992.html https://zhuanlan.zhih ...