测试 Pandas 代码

3
我有一个约50行的脚本,它从数据库读取数据,将其加载到pandas dataframe中,然后对dataframe执行许多操作。
我想知道人们通常如何测试这种类型的代码? 我不是在说像assert_frame_equal这样的工具,而是人们遵循的原则。
例如,我应该创建50个单独的测试来测试每个操作,还是应该尝试将脚本分解成较小的部分?
如果有人知道可以用作灵感的高质量开源项目,请告诉我。

直接从消息源头来看:https://github.com/pandas-dev/pandas/tree/master/pandas/tests - cs95
2个回答

3
如果您想开始编写Python单元测试,建议参考这个问题
由于50行代码相关联,您可能需要进行功能测试。 阅读单元测试、功能测试、验收测试和集成测试之间的区别。 如果您了解面向对象设计的SOLID原则,需要对代码进行重构
关于如何设计好的测试,请查看好的单元测试的特性
针对pandas,使用较少的数据来提高测试性能。 为测试创建虚拟副本,而不是使用原始数据。 并主要检查您想要检查的关键特性。

2
我可以建议这样的方法:
  1. 将脚本分成数据检索和数据处理两部分。最好单独测试您的数据访问/查询代码和计算。
  2. 准备用于测试的固定数据集。它可以是生产数据的一部分或覆盖某些边界条件(如NaN,零,负值等)的特殊数据集。
  3. 编写测试用例,检查计算结果。您可以直接检查值或进行一些聚合(COUNT,SUM),并将其与预期值进行比较。

检查次数取决于数据和计算。对于某些情况,仅检查所有元素的SUM()可能足够,而对于其他情况,则需要检查每个项目。

我更喜欢仅检查一些常规条件,如果出现问题,则会失败,而不是涵盖所有可能的情况。


谢谢。对于固定的数据集,您建议使用CSV文件加载到数据帧中还是有其他建议? - Kritz
当然,你可以使用任何东西。Csv 很容易使用。而且你可以将这个文件存储在测试用例附近。 - Lazarev Ivan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接