问题 使用数据库后端测试REST API


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

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


6400
2017-09-07 15:03


起源

有关: 我可以使用哪些工具来测试REST API?, 您使用什么工具来测试公共REST API?, 某处有REST服务测试客户端/应用程序吗?, 模拟与测试数据库?, 单元测试数据库 - Piotr Dobrogost
你可以给 VREST 一试。它有测试和模拟。 - Jangid


答案:


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

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

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

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

一般来说你会  让一个测试依赖于另一个。所有测试应该:

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

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


8
2017-09-08 23:09





单元测试应该在隔离模式下工作,因此您必须隔离依赖的资源,并使用隔离框架(模拟框架)完成此操作。旧版Windows系统的通用框架是 DevMagicFakeMOQ犀牛嘲笑TypeMock

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


2
2017-09-07 15:48