数据科学 - 测试

2019-02-17  本文已影响15人  IntoTheVoid

数据科学过程中, 出现的代码问题往往不容易检测到, 可能是某个值没有编码正确, 使用的特征不合适等等, 为了捕获这些错误, 需要去检查数据分析的质量和准确性以及代码质量, 合适的测试是必要的为了避免这些问题.

测试驱动的开发
单元测试: 测试的一种类型, 其覆盖一部分代码,通常为单个函数, 将其独立于其他代码.

单元测试

例如你想测试一个函数, 这个函数的功能是找出小于等于且最接近这个数.

def nearest_square(num):
      '''Return the nearest perfect square that is 
      less than or equal to num.'''
      root  = 0
      while  (root + 1) ** 2 <= num:
              root += 1
      return root ** 2

可以像下面一样在终端测试, 但是这样测试会比较繁琐, 而且也不高效

from nearest import nearest_square

nearest_square(5)
>>4
nearest_square(-12)
>>0
nearest_square(9)
>>9
nearest_square(23)
>>16

第二种方法, 可以像下面截图一样, 可以在程序里面运行, 但是任何没有告诉你是否得到了正确的答案


image.png

可以在print过程中, 打印正确答案, 但是仍然需要手动检查每一个测试, 这在运行大量单元测试过程中是不可取的.


image.png

我们可以使用assert去确保每个结果等于正确答案.

image.png

运行后, 如果某一个单元测试出现了问题, 那么就会发生下图的情况


image.png

用于单元测试的工具

要安装pytest, 请在终端pip install -U pytest您可以在这里看到更多关于入门的信息.

test_是默认值-如果您希望更改此设置, 您可以了解如何在此 pytest配置

在测试输出中, periods 表示成功的单元测试, F's 表示失败的单元测试。由于看到的只是测试函数失败的内容, 因此每个测试只有一个assert语句是明智的。否则, 您将不知道到底有多少测试失败, 哪些测试失败。

失败的assert语句不会停止测试, 但如果您有语法错误, 测试将停止。

数据科学领域的测试

数据科学的测试驱动开发是比较新的, 出现了很多实验和突破, 你可以在下面的资源中了解更多。

Resources:

上一篇 下一篇

猜你喜欢

热点阅读