【问题标题】:Testing pandas code [closed]测试熊猫代码[关闭]
【发布时间】:2018-05-04 12:46:42
【问题描述】:

我有一个大约 50 行的脚本,它从数据库中读取数据,将其加载到 pandas 数据帧中,然后对数据帧执行大量操作。

我想知道人们通常如何测试这种类型的代码?我说的不是 assert_frame_equal 之类的工具,而是人们遵循的原则。

例如,我应该创建 50 个单独的测试来基本上测试执行的每个操作,还是应该尝试将脚本分解成更小的部分?

如果有人知道我可以作为灵感的优质开源项目,请告诉我。

【问题讨论】:

标签: pandas testing


【解决方案1】:

如果你想开始写python单元测试,推荐这个question

由于 50 行是相关的,您可能需要进行功能测试。
阅读the difference between unit, functional, acceptance, and integration testing
如果您了解SOLID 面向对象设计的原理,则需要 refactoring 代码。

关于如何设计好的测试,What are the properties of good unit tests

特定于 pandas,使用更少的数据来提高测试性能。
制作一个虚拟副本进行测试,而不是使用原始数据。
并且主要检查你要检查的关键特征。

【讨论】:

    【解决方案2】:

    我可能会建议这样的方法:

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

    检查次数取决于您所做的数据和计算。在某些情况下,仅检查所有元素的 SUM() 可能就足够了,对于其他情况 - 检查每个项目。

    我更喜欢只检查一些一般情况,如果出现问题,这些情况会失败,而不是涵盖所有可能的情况。

    【讨论】:

    • 谢谢。对于固定数据集,这应该是我加载到数据框中的 CSV 文件,还是您有什么建议?
    • 当然,你可以使用任何东西。 CSV 易于使用。您可以将此文件存储在您的测试用例附近。
    猜你喜欢
    • 2021-04-20
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2020-01-19
    相关资源
    最近更新 更多