python 自学笔记20151222

错误处理

  • 事先约定返回错误码
  • 抛出错误

    • 如果要抛出错误,首先可以根据需要,可以定义一个错误的类,选择好继承关系,然后选择用raise语句抛出一个错误实例
    • `# err_raise.py
      class FooError(ValueError):
      pass

      def foo(s):
      n = int(s)
      if n==0:
      raise FooError(‘invalid value: %s’ % s)
      return 10 / n

      foo(‘0’)`

  • 在函数中,经常需要打印错误,同时将错误抛出
  • raise语句如果不带参数,就会把当前错误原样抛出。此外,exceptraise一个error,还可以把一种类型的错误转化为另一种类型
try:
    10 / 0
except ZeroDivisionError:
    raise ValueError('input error!')
  • 但是,决不应该把一个IOError转化成毫不相干的ValueError

单元测试

  • unittest.TestCase继承
  • test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行
  • 对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们期望的。最常用的断言就是assertEqual
  • 另外一种重要的断言就是期待抛出指定类型的error
  • 运行单元测试
    • 最简单的运行方法是在.py文件中添加两行代码
if __name__ == '__main__':
    unittest.main()
    * 这样就可以把测试文件当做正常的python脚本运行
    * 另一种方式是在命令行通过参数`-m unittest`直接运行单元测试

* setUp与`tearDown`
* 这两个方法会分别在每调用一个测试方法的前后分别被执行

文档测试

  • python 内置的“文档测试”doctest 模块可以直接提取注释中的代码并执行测试
  • doctest 严格按照python 交互命令行的输入和输出来判断测试结果是否正确
  • *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值