小编Gam*_*aSQ的帖子

测试 PermissionRequiredMixin 引发 PermissionDenied 而不是 403

我正在使用 django 1.10.5 和 PermissionRequiredMixin。
如果他们没有正确的权限,我不想将用户重定向到登录名,而是返回 403 错误。
理论上,如果在任何地方引发 PermissionDenied,则响应对象的 status_code 应为 403:

测试客户端不可见的唯一例外是 Http404、PermissionDenied、SystemExit 和 SuspiciousOperation。Django 在内部捕获这些异常并将它们转换为适当的 HTTP 响应代码。在这些情况下,您可以在测试中检查 response.status_code。

从文档:https : //docs.djangoproject.com/en/1.10/topics/testing/tools/#exceptions

但是,我的测试停止在异常 django.core.exceptions.PermissionDenied 这是最简单的 test.py:

from django.test import TestCase, RequestFactory
from doingTests.views import ViewWithPermission
from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied

class TestPermission(TestCase):
    def test_permission_view(self):
        user = User.objects.create(username="john", password="doh")
        permView = ViewWithPermission.as_view()
        rf = RequestFactory()
        request = rf.get('/test/')
        request.user = user
        self.assertEqual(permView(request).status_code, 403)
Run Code Online (Sandbox Code Playgroud)

有了这个 view.py:

from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic.base import TemplateView

class ViewWithPermission(PermissionRequiredMixin, …
Run Code Online (Sandbox Code Playgroud)

python django tdd unit-testing

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

长度参数化的传递给类型绑定过程的对象有gfortran抱怨

我正在学习Fortran,并且想将数组和子例程封装为一种类型。问题似乎出在自对象的类型定义中。

这是我想出的最小测试用例:

module testing
  implicit none

  type test(para)
    integer, len :: para
    real, dimension(para) :: weights

  contains
    procedure :: testing => testing_test
  end type
contains
  subroutine testing_test(self)
    class(test(*)) :: self
  end subroutine
end module
Run Code Online (Sandbox Code Playgroud)

使用gfortran进行编译会引发以下错误:

module_test.f08:9:23:

  procedure :: testing => testing_test
          1
Error: Argument ‘self’ of ‘testing_test’ with PASS(self) at (1) must be of the derived-type ‘test’
Run Code Online (Sandbox Code Playgroud)

它在固定数组长度(因此type%para不存在)时起作用

我要做什么(带有可变大小的数组和绑定过程的类型)很简单,还是我缺少有关伪参数定义的内容?

fortran gfortran type-definition

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

标签 统计

django ×1

fortran ×1

gfortran ×1

python ×1

tdd ×1

type-definition ×1

unit-testing ×1