【发布时间】:2015-08-02 08:04:59
【问题描述】:
通常我的工作流程如下:
- 对数据库执行 SQL 查询,
- 将其加载到内存中
- 根据逻辑转换数据
foo() - 将转换后的数据插入到数据库中的表中。
应该如何为这种工作流程编写单元测试?我对测试真的很陌生。
无论如何,我使用的是 Python 3.4。
【问题讨论】:
标签: python unit-testing tdd integration-testing
通常我的工作流程如下:
foo()
应该如何为这种工作流程编写单元测试?我对测试真的很陌生。
无论如何,我使用的是 Python 3.4。
【问题讨论】:
标签: python unit-testing tdd integration-testing
理想情况下,单元测试不涉及数据库。数据库很慢,使用它们的测试变得相互依赖,以与测试无关的混乱方式。那么,在您的四个步骤中,您要进行单元测试的是#3,foo()。 foo() 应该有一个输入(将从数据库加载的数据和输出(将写回数据库的数据)。您的测试应该创建输入,完全在内存中,将其传递给 foo( ),并确认结果是您期望 foo() 为该输入生成的结果。
关于不涉及数据库的单元测试,请参阅Michael Feathers' definition of a unit test。
【讨论】:
测试这种工作流程的一种方法是使用专门用于测试的数据库。测试数据库反映了生产数据库的结构,但在其他方面完全是空的(即表中没有数据)。那么套路如下
【讨论】: