繁体   English   中英

数据转换应如何编写单元测试?

[英]How should unit test be written for data transformation?

通常,我的工作流程如下:

  1. 在数据库上执行SQL查询,
  2. 加载到内存
  3. 根据逻辑foo()转换数据
  4. 将转换后的数据插入数据库中的表。

对于这种工作流程应如何编写单元测试? 我真的是测试新手。

无论如何,我正在使用Python 3.4。

测试这种工作流程的一种方法是使用专门的数据库进行测试。 测试数据库反映了您的生产数据库的结构,但是它完全是空的(即表中没有数据)。 例程如下

  • 连接到测试数据库(并可能重新加载其结构)
  • 对于每个测试用例,请执行以下操作:
    • 将最少的数据集加载到数据库中以测试您的例程
    • 运行您的函数以测试并获取其输出(如果有)
    • 执行一些测试,以查看您的功能是否达到了预期的效果
    • 在下一个测试用例运行之前,从数据库中删除所有数据
  • 完成所有测试后,断开与数据库的连接

理想情况下,单元测试不要接触数据库。 数据库很慢,并且使用它们的测试以与测试无关的混乱方式相互依赖。 那么,在您的四个步骤中,要进行单元测试的步骤是#3,即foo()。 foo()应该有一个输入(将从数据库中加载的数据,然后输出(将被写回到数据库中的数据)。您的测试应完全在内存中创建输入,并将其传递给foo( ),并确认结果就是您期望foo()为该输入生成的结果。

关于单元测试不涉及数据库,请参阅Michael Feathers对单元测试的定义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM