Djangoのユニットテストノート

  入門

  ユニットテストについての基本的な知識は、それだけで、もはやここにはありません:ユニットテストはコードの別の部分をテストするためのコードの一部です。最も一般的に使用されるフレームワークはPythonのユニットテストフレームワークである、ユニットテストで、フレームワークをテストジャンゴユニットはtest.TestCaseはPythonのたunittest.TestCaseを継承しています。

たunittest.TestCaseのTestCaseはまた、self.clientを定義するものとして、コードの繰り返しの多くを書く必要がなくなり、さらにパッケージングを行い、電子メールサービスは、メールを送信する便利な方法を提供します。

DjangoのモデルはよくTは、テンプレートはHTMLファイルは、HTMLのため、基本的に重要なロジックコードがない場合でも、死者を書くために、測定可能なコードが存在しないあるあるMTVモデルを、知られています。だから、モデルとビューでMとVの拡大に焦点を当てた時のユニットテスト、中。

 

  道

ユニットテストは、2つの方法で行わ:

; 1. Djangoフレームワークは、文書tests.pyユニットテストを来る
; 2.カスタムはtest.pyファイルを作成し
、両方が同じですが、実行は同じ実行時のディレクトリではありません。

注:私は最初にここにいます。

 

  モデルのテスト

公共の図書館利用をインポートして起動します。

django.test輸入のTestCaseから
django_web.modelsからのイベント、ゲストインポート
django.contrib.auth.modelsからユーザーをインポート
#ここにあなたのテストを作成します。
インポート日時
。get_now = datetime.datetime.now()のstrftime( '%Y-%M-%D%H:%のM:%S')

 

試験モデル

クラスDjangoWebModelTest(テストケース):
    "" "测试模型" "" 
    defのセットアップ(自己) - >なし:
        Event.objects.create(ID = 1、名前= '小米5'、状態=真、アドレス= '深圳'限界= 3、START_TIME = get_now)
        Guest.objects.create(ID = 1、EVENT_ID = 1、本名= '老王'、電話= 15099925893、Eメール= '11 @ qq.com」、記号=偽)

    DEF test_event_model(自己):
        "" "测试发布会表" "" 
        結果= Event.objects.get(名= '小米5')
        self.assertEqual(result.address、 '深圳')
        self.assertTrue(result.status)

    DEF test_guest_model (自己):
        "" "测试嘉宾表" "" 
        結果= Guest.objects.get(電話=」15099925893 ') 
        self.assertEqual(result.realname、'老王')
        self.assertFalse(result.sign)

 

  ビュー機能テスト

IndexPageTestクラス(テストケース):
    "" "テストインデックスログホーム" "" 

    DEFのtest_index_page(自己):
        "" "テスト・インデックス・ビュー" "" 
        レスポンス= self.client.get( '/インデックス/')
        self.assertEqual(レスポンス.status_code、200)
        self.assertTemplateUsed(応答、 'index.htmlを')

クラスLoginActionの(テストケース):
    "" "テストアクションログ" "" 
    DEFセットアップ(自己) - >なし
        ""「ユーザーデータを作成します。2種類" ""さまざまな方法でユーザー作成
        User.objects.create(ユーザ名= 'ADMIN')
        User.objects.create_user(、パスワードをユーザ名= 'ADMIN2'、Eメール= '11.com @ ADMINを' = '123456')

    DEFのtest_add_admin (自己):
        "" " "ユーザ管理テストを追加"" 
    DEFのtest_add_admin2(セルフ): 
        ユーザー= User.objects.get(ユーザ名=「管理者」)
        self.assertEqual(user.username、 '管理者')

        "" "添加用户ADMIN2测试" "" 
        ユーザー= User.objects.get(ユーザ名= 'ADMIN2')
        self.assertEqual(user.username、 'ADMIN2')
        自己。 assertEqual(user.email、 '管理者@ 11.com')

    デフtest_login_username_password_null(自己):
        "" "用户名密码为空" "" 
        TEST_DATA = { 'ユーザ名': ''、 'パスワード': ''} 
        応答= self.client.post( '/ login_action /'、データ= TEST_DATA)
        self.assertEqual(response.status_code、302)

    DEF test_login_username_password_error(自己):
        "" "用户名密码错误" ""
        TEST_DATA = { 'ユーザ名': 'テスト'、 'パスワード': '123456'} 
        応答= self.client.post( '/ login_action /'、データ= TEST_DATA)123456' } 
        self.assertEqual(response.status_code、302)

    DEF test_login_action_success(自己):
        "" "登录成功" "" 
        TEST_DATA = { 'ユーザ名': 'ADMIN2'、 'パスワード': '123456'} 
        応答= self.client.post( '/ login_action /'、データ= TEST_DATA)
        self.assertEqual (response.status_code、302)


クラスEventManageTest(テストケース):
    "" "发布会管理" "" 

    defのセットアップ(自己) - >なし:
        #创建用户账号
        User.objects.create_user( '管理者'、 '管理者@ QQ。 comの」、 '123456')
        Event.objects.create(名= '小米3'、リミット= 3、アドレス= '深圳'、状態=真、START_TIME = get_now)
        self.login_user = { 'ユーザ名': '管理者' 「パスワード」:「123456」} 
        #事前に登録
        ( '/ login_action /'、データ= self.login_user)self.client.post 

    DEFのtest_add_event_data(自己):LOGIN_USER) 
        "" "テスト会議を追加:キビ3" "" 
        イベント= Event.objects.get(名= "アワ3")
        self.assertEqual(event.address、 "深圳")

    DEF test_event_success(自己):
        "" "测试发布会:小米3" "" 
        応答= self.client.post( '/ event_manager /')
        self.assertEqual(応答。 STATUS_CODE、200)
        self.assertIn( "小米3" .encode( 'UTF-8')、response.content)

    DEF test_event_search_success(自己):
        "" "测试发布会搜索" "" 
        応答= self.client.post( '/ SEARCH_NAME /')
        self.assertEqual(response.status_code、200)
        self.assertIn( '小米3'.encode(' UTF-8' )、response.content)



クラスGuestManageTest(テストケース):
    "" "嘉宾管理" 「」 
    DEFセットアップ(自己) - >なし:
        User.objects.create_user( '管理者'、 '[email protected]'、 '123456') 
        Event.objects.create(ID = 1、名前= 'キビ2'、限界= 3、アドレス = ' 深'、ステータス真=、= START_TIME get_now)
        Guest.objects.create(=本名'サバイバルソング'、電話= 15099925798、'11 @ = qq.comメールでの'ログイン= 0、EVENT_ID =。1)
        self.login_user = {'ユーザ名" : 'ADMIN'、 'パスワード': '123456'} あらかじめ登録さ
        self.client.post( '/ login_action /'、データ= self.login_user)

    DEF test_add_guest(自己):
        "" "テスト追加ゲスト:サバイバル・ソング" "" 
        ユーザーレビュー= Guest.objects.get(=本名の'サバイバル歌')
        self.assertEqual(guest.realname、 'サバイバル・ソング')
        self.assertEqual(guest.phone、'15099925798') 
        self.assertEqual(guest.email、'11 @ qq.com ')
        self.assertFalse(guest.sign) 
    DEFセットアップ(自己) - >なし:
看板) 
    DEFのtest_guest_success(自己):
        「」「テストのゲストリスト:サバイバル歌」「」
        応答= self.client.post( '/ guest_manager /')
        self.assertEqual(response.status_code、200)
        self.assertIn( '小李子' .encode( 'UTF-8')、response.content)
        self.assertIn( '15099925798'.encode(' UTF-8 ')、response.content)

    DEF test_guest_search_success(自己):
        "" "测试嘉宾搜索" "" 
        応答= self.client.post(' / search_phone / ')
        self.assertEqual( response.status_code、200)
        self.assertIn( '小李子' .encode( 'UTF-8')、response.content)
        self.assertIn( '15099925798'.encode(' UTF-8' )、response.content)


クラスSignIndexActionTest(テストケース):
    "" "发布会签到" ""
        User.objects.create_user( '管理者'、 '[email protected]'、 '123456')
        Event.objects.create(ID = 1、名前= '小米1'、限界= 3、アドレス= '广州'、状態=真、START_TIME = get_now)
        Event.objects.create(ID = 2、NAME = '小米9 '限界= 3、アドレス= '北京'、状態=真、START_TIME = get_now)
        Guest.objects.create(本名= '老张'、電話= 15099925798、email='[email protected]'、符号= 0 、EVENT_ID = 1)#未签到
        Guest.objects.create(本名= '老周'、電話= 15099925700、email='[email protected]」、符号= 1、EVENT_ID = 2)#未签到
        self.login_user = { 'ユーザ名': '管理者'、 'パスワード': '123456'} 
        self.client.post( '/ login_action /'、データ= self.login_user)

    DEF test_phone_null(自己): 
        "" "テストは、電話番号は空です。" ""
        応答= self.client.post(」 / sign_index_action / 1 /」、{ "電話": ""}) 
        self.assertEqual(response.status_code、200)
        self.assertIn( '電話番号を入力してください。'エンコード( 'UTF-8')、response.content。)

    DEFのtest_phone_error(自己):
        "" "電話番号が間違っ" "" 
        レスポンス= self.client.post(「/ sign_index_action / 2 / '{ "電話": "15,099,925,732,398"})
        self.assertEqual(response.status_code、200)である
        。self.assertIn( "間違った電話番号"エンコード(' UTF- 8「)、response.content) 

    test_phone_or_eventid_error DEF(セルフ):
        "" "" "電話番号は、会議のゲストの一部ではない" 
        ( '/ sign_index_action / 2 /'、{ "15099925798" "電話"})応答= self.client.post 
        self.assertEqual (response.status_codeは、200)
        self.assertIn(「電話番号は、会議の一部ではないゲストを属します。」。 
        "" "" "ユーザーがチェックしていること"

    DEF test_already_sign(自己):
        応答= self.client.post( '/ sign_index_action / 2 /'、{ "電話": "15099925700"})
        self.assertEqual(response.status_code、200)
        self.assertIn(「您已经签到! "エンコード( 'UTF-8')、response.content)

    DEF test_sign_success(自己
        ):"""签到成功"" " 
        応答= self.client.post( '/ sign_index_action / 1 /'、{"電話":" 15099925798 "})
        (self.assertEqual response.status_code、200) 
        !。self.assertIn(" 签到成功」コード( 'UTF-8')、response.content)

 

  ユニットテストコードを実行します

「」 " 
ファイル名を指定して実行すべてのユースケース:
のpython3 manage.pyテスト

実行をアプリケーション内のすべてのユースケースdjango_web:
のpython3 manage.pyテストdjango_webの

実行tests.pyユースケースファイルアプリケーションの記号で:
のpython3 manage.pyテストdjango_web.testsは

django_webでアプリケーションを実行tests.py DjangoWebModelTest試験クラスファイル:
のpython3 django_web.tests.DjangoWebModelTest manage.py試験の

試験方法(ユースケース)DjangoWebModelTest試験クラスdjango_web実行中のアプリケーション:
のpython3 manage.py試験django_web.tests.DjangoWebModelTest.test_event_modelに

ファジーマッチング試験ファイル
テストのpython3 -p manage.pyテストdjango_webを実行するための*の.py 
...... 

「」 "

 

  結果

D:\ my_django_guest>のpython3 manage.pyテストdjango_web 
別名「デフォルト」のためのテスト・データベースを作成しています... 
システムは何の問題を(0沈黙)確認されなかっチェック。
................... 
------------------------------- --------------------------------------- 
3.080sで実行した19回のテスト

OK 
ためのテストデータベースの破棄別名「デフォルト」...

  

おすすめ

転載: www.cnblogs.com/liudinglong/p/12329425.html