Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django pytest用于登录_Python_Django_Pytest Django - Fatal编程技术网

Python Django pytest用于登录

Python Django pytest用于登录,python,django,pytest-django,Python,Django,Pytest Django,我是pytest新手,正在尝试测试登录名。我不知道如何测试登录 登录视图.py @api_view(['POST','GET']) @permission_classes((AllowAny,)) def ulogin(request): username = request.POST['uname'] password = request.POST['pass'] user = authenticate(username=username, password=passw

我是pytest新手,正在尝试测试登录名。我不知道如何测试登录

登录视图.py

@api_view(['POST','GET'])
@permission_classes((AllowAny,))
def ulogin(request):
    username = request.POST['uname']
    password = request.POST['pass']
    user = authenticate(username=username, password=password)
    if user is not None and user.is_active:
        auth_login(request,user)
        serialized = LoginSerializer(user)
        print serialized.data
        return Response(serialized.data,status=status.HTTP_200_OK)
    else:
        print "invalid user"
        return Response( {
            'error_message':"Username/password is incorrect.",
            },status=status.HTTP_401_UNAUTHORIZED)
我尝试了以下代码,但无法成功运行
错误:'HttpResponse'对象没有属性'uname'

 def test_ulogin(self,client):
    user = User.objects.create(uname="qw", password='qw')
    response = client.post('/', {'uname': 'qw', 'password': 'qw'})
    print response.uname

我们应该如何编写登录测试用例。如果要使用
pytest
库或任何其他库或框架进行测试,请使用
assert
(或类似函数)验证pytest断言,您可以查看
assert
文档

Python还有一个
assert
,也可以用来验证断言

使用python的assert语句的一些示例:

assert 2 + 2 == 5 # Raises an AssertionError
assert 2 + 2 == 4 # No exception raised
在第一个示例中,我尝试验证2+2等于5的断言,但由于它不是真的,因此我们需要使用python引发一个
AssertionError

第二个示例已验证,因此未引发异常

现在让我们回到你的问题上来。您想测试您的登录API,它在POST参数中接受用户名和密码

为此,您可以做出一些基本断言,例如:

  • 如果提供了正确的用户名和密码,则状态代码应为200(assert response.status_code==200)
  • 如果提供的用户名或密码不正确,则状态代码应为401(assert response.status_code==401)
您可以为
ulogin
函数提出更多这样的断言。
并使用pytest的
assert
函数进行验证。

当涉及到使用
pytest
库或任何其他库或框架进行测试时,您使用
assert
(或类似函数)来验证pytest的断言,您可以查看
assert
文档

Python还有一个
assert
,也可以用来验证断言

使用python的assert语句的一些示例:

assert 2 + 2 == 5 # Raises an AssertionError
assert 2 + 2 == 4 # No exception raised
在第一个示例中,我尝试验证2+2等于5的断言,但由于它不是真的,因此我们需要使用python引发一个
AssertionError

第二个示例已验证,因此未引发异常

现在让我们回到你的问题上来。您想测试您的登录API,它在POST参数中接受用户名和密码

为此,您可以做出一些基本断言,例如:

  • 如果提供了正确的用户名和密码,则状态代码应为200(assert response.status_code==200)
  • 如果提供的用户名或密码不正确,则状态代码应为401(assert response.status_code==401)
您可以为
ulogin
函数提出更多这样的断言。 并使用pytest的
assert
函数进行验证