2017-05-31 69 views
0

我是新编写单元测试的,这个问题可能很愚蠢,但是我经过大量的研究后发布了这个问题。视图中的嘲讽函数 - Django

我正在尝试为集中式/ views.py中的一个函数编写一个单元测试,这个测试正在很多其他视图中使用。

功能看起来像这样

def make_job(self, request, *args, **kwargs): 
    ..... 
    ..... 
    return Response(data, status=status.HTTP_200_OK) 

我需要在嘲弄在单元测试中请求帮助,因为该功能是由我不知道如何独立测试此功能不依赖于其它视图称为网址路径。

嘲笑这个请求的方法是什么?

感谢

回答

0

您可以使用mock.patch作为函数装饰,甚至更好的contextmanager:

with mock.patch('path.to.your.app.Class.method', new=new_function_with_return): 
    # do something here 
    pass 

https://docs.python.org/3/library/unittest.mock.html#patch

[编辑]对不起,我正在读一本有点太快速。你可以通过Django的RequestFactory制造假的请求对象:

https://docs.djangoproject.com/en/1.11/topics/testing/advanced/#the-request-factory

+0

@odi嗨 - 感谢您的回复,我曾尝试要求在工厂,但需要的URL和自多个视图的路径使用这个功能,我不知道应该使用哪个请求url。所以我想知道是否有一种方法可以独立测试 – HitRefresh

+0

,在测试理论时,您应该测试所有的url路径以达到100%的覆盖率和分支控制;)对某些函数只进行集成测试并不理想,但有时候是唯一的经济的方式来获得体面的覆盖面。从经验谈起:在一个大的遗留代码基础上进行一些整合测试,在疯狂到合理的规模上要高出几个数量级。 – ACimander