【发布时间】:2018-05-04 12:46:42
【问题描述】:
我有一个大约 50 行的脚本,它从数据库中读取数据,将其加载到 pandas 数据帧中,然后对数据帧执行大量操作。
我想知道人们通常如何测试这种类型的代码?我说的不是 assert_frame_equal 之类的工具,而是人们遵循的原则。
例如,我应该创建 50 个单独的测试来基本上测试执行的每个操作,还是应该尝试将脚本分解成更小的部分?
如果有人知道我可以作为灵感的优质开源项目,请告诉我。
【问题讨论】:
我有一个大约 50 行的脚本,它从数据库中读取数据,将其加载到 pandas 数据帧中,然后对数据帧执行大量操作。
我想知道人们通常如何测试这种类型的代码?我说的不是 assert_frame_equal 之类的工具,而是人们遵循的原则。
例如,我应该创建 50 个单独的测试来基本上测试执行的每个操作,还是应该尝试将脚本分解成更小的部分?
如果有人知道我可以作为灵感的优质开源项目,请告诉我。
【问题讨论】:
如果你想开始写python单元测试,推荐这个question。
由于 50 行是相关的,您可能需要进行功能测试。
阅读the difference between unit, functional, acceptance, and integration testing。
如果您了解SOLID 面向对象设计的原理,则需要 refactoring 代码。
关于如何设计好的测试,What are the properties of good unit tests
特定于 pandas,使用更少的数据来提高测试性能。
制作一个虚拟副本进行测试,而不是使用原始数据。
并且主要检查你要检查的关键特征。
【讨论】:
我可能会建议这样的方法:
检查次数取决于您所做的数据和计算。在某些情况下,仅检查所有元素的 SUM() 可能就足够了,对于其他情况 - 检查每个项目。
我更喜欢只检查一些一般情况,如果出现问题,这些情况会失败,而不是涵盖所有可能的情况。
【讨论】: