【发布时间】:2019-07-23 09:22:26
【问题描述】:
我有这样的看法:
class MyView:
@staff_member_required
def post(self, request):
#some logic
我正在使用 pytest https://pytest-django.readthedocs.io/en/latest/ 进行测试。
我试过了:
@pytest.mark.django_db
def test_upload_payments(rf):
with open("tests/fixtures/test_payments.csv") as f:
request = rf.post("/invoice_admin/upload_payments/",
{"invoice_file": f})
resp = MyView().post(request)
assert resp.status_code == 201
但是,我得到一个错误:
request = <WSGIRequest: POST '/invoice_admin/upload_payments/'>, args = (), kwargs = {}
@wraps(view_func)
def _wrapped_view(request, *args, **kwargs):
> if test_func(request.user):
E AttributeError: 'WSGIRequest' object has no attribute 'user'
/usr/local/lib/python3.6/dist-packages/django/contrib/auth/decorators.py:20: AttributeError
如果我删除 @staff_member_requred,一切正常 - 测试按预期运行。
我该如何解决这个问题?
我并不真正关心成为具有正确测试凭据的管理员——我只想“强制登录”并能够运行测试。
【问题讨论】:
-
我认为你应该写
@method_decorator这样的答案:stackoverflow.com/a/6069444/6265279
标签: python django pytest pytest-django