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

时间:2015-08-02 08:04:59

标签: python unit-testing tdd integration-testing

通常我的工作流程如下:

  1. 在数据库上执行SQL查询,
  2. 将其加载到内存
  3. 根据逻辑foo()
  4. 转换数据
  5. 将转换后的数据插入数据库中的表格。
  6. 如何为这种工作流程编写单元测试?我真的很擅长测试。

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

2 个答案:

答案 0 :(得分:0)

测试此类工作流的一种方法是使用专门的数据库进行测试。测试数据库镜像生产数据库的结构,但是否则完全为空(即表中没有数据)。例程如下

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

答案 1 :(得分:0)

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

关于未触及数据库的单元测试,请参阅Michael Feathers' definition of a unit test

相关问题