在我的Django站点中,我使用Django REST框架。为了不重复自己,我创建了一些mixins来简化我的视图集的编写(这里是一个example of a similar style of mixin)。
我的问题是如何测试这样的混音?如果它是在某个URL上公开的常规视图,我会使用框架提供的APITestCase
,但由于我的mixin不是一个独立的对象,需要继承而实际上有用,这种测试方式不是适用。
有没有办法嘲笑视图的其余部分?或者我是否必须使用此mixin创建一个虚拟应用程序并进行集成测试?
答案 0 :(得分:1)
您应该像测试标准Django视图mixin一样测试Django REST Framework视图mixins。您在附加到视图时测试它,或者模拟它依赖的标准视图的所有部分。
当您以与测试标准视图相同的方式连接到视图时,您应该能够测试mixins,因为mixin应该以可测试的方式保持一致。您可能需要为mixin使用的每个案例创建测试视图,这是我们在创建测试时必须使用DRF JSON API。
对于Django REST Framework Bulk,最好的方法可能是创建一个附加了mixin的视图,并测试它是否按预期响应。对于批量混合,我们假设需要测试以下内容:
这需要至少五次测试,很可能会分开他们正在测试的内容。您还需要确保测试涵盖了被调用的钩子以及预期的任何副作用。
Python unittest.mock
模块对模拟视图有很多帮助(如果你想这样做),并允许你确定是否调用方法(如钩子)。