如何在Django REST Framework中测试视图mixins?

时间:2014-11-13 13:02:00

标签: django unit-testing integration-testing django-rest-framework

在我的Django站点中,我使用Django REST框架。为了不重复自己,我创建了一些mixins来简化我的视图集的编写(这里是一个example of a similar style of mixin)。

我的问题是如何测试这样的混音?如果它是在某个URL上公开的常规视图,我会使用框架提供的APITestCase,但由于我的mixin不是一个独立的对象,需要继承而实际上有用,这种测试方式不是适用。

有没有办法嘲笑视图的其余部分?或者我是否必须使用此mixin创建一个虚拟应用程序并进行集成测试?

1 个答案:

答案 0 :(得分:1)

您应该像测试标准Django视图mixin一样测试Django REST Framework视图mixins。您在附加到视图时测试它,或者模拟它依赖的标准视图的所有部分。

当您以与测试标准视图相同的方式连接到视图时,您应该能够测试mixins,因为mixin应该以可测试的方式保持一致。您可能需要为mixin使用的每个案例创建测试视图,这是我们在创建测试时必须使用DRF JSON API

对于Django REST Framework Bulk,最好的方法可能是创建一个附加了mixin的视图,并测试它是否按预期响应。对于批量混合,我们假设需要测试以下内容:

  • 单个对象POST仍然有效
  • 列表中的多个对象POST
  • 列表中的多个对象PUT
  • 列表中的多个对象PATCH
  • 列表中的多个对象DELETE

这需要至少五次测试,很可能会分开他们正在测试的内容。您还需要确保测试涵盖了被调用的钩子以及预期的任何副作用。

Python unittest.mock模块对模拟视图有很多帮助(如果你想这样做),并允许你确定是否调用方法(如钩子)。