2016-07-08 2 views
1

新しいpytestにログインしてログインをテストしようとしていました。テストログインにアプローチする方法がイムわからないDjango pytest for login

ログインviews.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 

を実行することができませんでしたログイン。それはあなたがassertドキュメントhereを確認することができますpytestのためのあなたの主張を検証するためのpytestライブラリまたは他のライブラリやフレームワークを使用すると、assert(または同様の機能)を使用するを使用してテストすることになると、この上の任意のヘルプは

答えて

1

を高く評価しています。

Pythonにはassertstatementもあり、アサーションの検証にも使用できます。

Pythonのassert文を使用していくつかの例:

assert 2 + 2 == 5 # Raises an AssertionError 
assert 2 + 2 == 4 # No exception raised 

私は2 + 2が5に等しいという主張を検証しようとした最初の例では、私たち、PythonがAssertionErrorを上げる真実ではないからです。

2番目の例は検証されているため、例外は発生しません。

今すぐ問題に戻ってください。 POSTパラメータでユーザー名とパスワードを受け入れるログインAPIをテストする必要があります。正しいユーザ名とパスワードが(response.status_codeの== 200をアサート)ステータスコードが200でなければなりません提供されている場合

  • このためには、次のようないくつかの基本的な主張を行うことができます。

  • 不正なユーザ名またはパスワードが提供されている場合は、ステータスコードは、あなたがあなたのulogin機能のためにそれ以上のそのようなアサーションを考え出すことができる401(response.status_codeの== 401をアサート)

でなければなりません。 を開き、pytestのassert関数を使用して検証します。