繁体   English   中英

单元测试Python:在函数内部调用函数调用

[英]Unit-testing Python: Mocking function calls inside function

我有这样的django视图

# Django view

from some_module import f2
def f1(request, version):
    # some code

    f2(**kargs)

    # more code
    return HTTPResponse(response)

函数f2在另一个模块中

# some_module
def f2(**kargs):
    # some code

Django视图是API的一部分,因此请求和响应都在json中

我如何 :

  1. 在模拟请求时为此函数编写单元测试
  2. mock f2,这是一个基于数据库的函数,完全避免数据库连接

编辑:

我使用的数据库是Cassandra,所以我不能使用django.db

您可以使用@mock.patch装饰器来模拟单元测试中的f2()方法。

import mock
import some_module
from django.test import TestCase

def mocked_f2(**kargs):
    return 'Hey'

class YourTestCase(TestCase):

    @mock.patch('some_module.f2', side_effect=mocked_f2)
    def test_case(self):
        print some_module.f2()  # will print: 'Hey'

在这种情况下,每次在代码中调用f2()时,都会调用mocked_f2

django提供一些脚手架进行测试 - 参见文档

至于f2() - 您可以使用灯具来设置数据库。 或者使用mock来提供虚拟数据库连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM