相关疑难解决方法(0)

__init__和__call__有什么区别?

我想知道__init____call__方法之间的区别.

例如:

class test:

  def __init__(self):
    self.a = 10

  def __call__(self): 
    b = 20
Run Code Online (Sandbox Code Playgroud)

python oop class object callable-object

457
推荐指数
13
解决办法
21万
查看次数

在不使用Django本身的情况下测试自定义Django中间件

我已经用1.10样式编写了自定义Django中间件的代码,类似于:

class MyMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response
        # some initialization stuff here

    def __call__(self, request):
        # Code executed before view functions are called. 
        # Purpose of this middeware is to add new attribute to request

        # In brief:
        request.new_attribute = some_function_returning_some_object()
        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.

        return response
Run Code Online (Sandbox Code Playgroud)

请注意,该中间件正受到威胁,因为它是一个单独的Python模块,不属于我的项目中的任何特定应用程序,而是驻留在外部,并像其他任何软件包一样通过pip安装。它本身不起作用,只有安装在Django应用中才起作用。

它工作正常,但是,我想对其进行测试。到目前为止,我所做的是这样的my_tests.py

from my_middleware_module import MyMiddleware
# some @patches
def test_mymiddleware():
    request = Mock() …
Run Code Online (Sandbox Code Playgroud)

python testing django django-middleware django-1.10

5
推荐指数
1
解决办法
2700
查看次数