1

我是 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)

我尝试了以下代码,但无法成功运行error:'HttpResponse' object has no attribute 'uname'

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

我们应该如何编写登录测试用例。对此的任何帮助表示赞赏

4

1 回答 1

0

当涉及到使用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.

第二个示例已验证,因此不会引发异常。

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

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

  • 如果提供了正确的用户名和密码,则状态码应为 200(断言 response.status_code == 200)。
  • 如果提供的用户名或密码不正确,则状态码应为 401(断言 response.status_code == 401)

ulogin你可以为你的函数想出更多这样的断言。并使用 pytest 的assert功能进行验证。

于 2016-07-08T07:26:23.060 回答