使用数据库后端测试REST API

时间:2011-09-07 15:03:07

标签: python unit-testing testing rest flask

我想知道测试使用数据库后端的REST API的最佳/不同方法。我在Python中使用Flask开发了我的API,并希望使用unittest或nose。

但我的问题是,一些资源需要另一个资源来创建它们。有没有办法说测试博客文章的创建需要另一个涉及创作作者的测试是否成功?

2 个答案:

答案 0 :(得分:8)

有两种标准的方法来接近依赖于其他东西的测试(对象,函数调用等)。

  • 您可以使用模拟代替您正在测试的代码所依赖的对象。
  • 您可以在测试设置中加载灯具或进行创建/调用。

有些人喜欢“经典”单元测试,其中只测试代码的“单元”。在这些情况下,您通常使用模拟和存根来替换依赖项。

其他类似于更多综合测试,其中测试了大多数或所有调用堆栈。在这些情况下,您可以使用夹具,甚至可以在设置功能中进行调用/创建。

通常你会让一个测试依赖于另一个。所有测试都应该:

  • 自己清理
  • 可以孤立地运行
  • 可以作为套件的一部分运行
  • 保持一致且可重复

如果您使一个测试依赖于另一个测试,则它们不能单独运行,并且您也强制命令运行测试。在测试中强制执行命令并不好,事实上很多人都认为你应该随机运行测试的顺序。

答案 1 :(得分:2)

单元测试应该在隔离模式下工作,因此您必须隔离依赖资源,并使用隔离框架(模拟框架)完成此操作。旧版Windows系统的常见框架为DevMagicFakeMOQRhino MocksTypeMock

DevMagicFake将使您能够伪造数据库,因此您无需创建数据库甚至任何代码来保存数据,因为它可以将数据保存在内存中,您可以随时检索它。