Djangoユニットテストノート
10207 ワード
引用する
ユニットテストの基本的な知識はここでは説明しません.簡単な一言です.ユニットテストは1つのコードで別のコードをテストします.最も一般的なフレームワークはunittestであり、pythonのユニットテストフレームワークであり、djangoユニットテストフレームワークtestである.TestCaseはpythonを継承したunittestです.TestCase.
TestCaseもunittest.TestCaseはさらにパッケージ化され、selfを定義するなど、書くコードを繰り返す必要がなくなりました.Client、Email Serviceは、便利なメール送信方法を提供しています.
djangoモードはMTVモデルであることはよく知られており、TはテンプレートであるHTMLファイルであり、HTMLにとって測定可能なコードはなく、基本的には死んでおり、あっても重要な論理コードではない.したがって,ユニットテストを行う際には,MとVの展開,すなわちmodelsとviewsに重点を置く.
モード
ユニットテストの2つの方法:
1.djangoフレームワークに付属するtestsを使用する.pyファイルはユニットテストを行います.2.カスタム作成test.pyファイル;どちらも同じですが、実行時に実行されるディレクトリが異なるだけです.
注:ここでは1つだけ紹介します.
モデルテスト
まず、共通ライブラリをインポートします.
モデルのテスト
ビュー関数テスト
ユニットテストコードの実行
実行結果
ユニットテストの基本的な知識はここでは説明しません.簡単な一言です.ユニットテストは1つのコードで別のコードをテストします.最も一般的なフレームワークはunittestであり、pythonのユニットテストフレームワークであり、djangoユニットテストフレームワークtestである.TestCaseはpythonを継承したunittestです.TestCase.
TestCaseもunittest.TestCaseはさらにパッケージ化され、selfを定義するなど、書くコードを繰り返す必要がなくなりました.Client、Email Serviceは、便利なメール送信方法を提供しています.
djangoモードはMTVモデルであることはよく知られており、TはテンプレートであるHTMLファイルであり、HTMLにとって測定可能なコードはなく、基本的には死んでおり、あっても重要な論理コードではない.したがって,ユニットテストを行う際には,MとVの展開,すなわちmodelsとviewsに重点を置く.
モード
ユニットテストの2つの方法:
1.djangoフレームワークに付属するtestsを使用する.pyファイルはユニットテストを行います.2.カスタム作成test.pyファイル;どちらも同じですが、実行時に実行されるディレクトリが異なるだけです.
注:ここでは1つだけ紹介します.
モデルテスト
まず、共通ライブラリをインポートします.
from django.test import TestCase
from django_web.models import Event,Guest
from django.contrib.auth.models import User
# Create your tests here.
import datetime
get_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
モデルのテスト
class DjangoWebModelTest(TestCase):
""" """
def setUp(self) -> None:
Event.objects.create(id=1,name=' 5',status=True,address=' ',limit=3,start_time=get_now)
Guest.objects.create(id=1,event_id=1,realname=' ',phone=15099925893,email='[email protected]',sign=False)
def test_event_model(self):
""" """
result = Event.objects.get(name=' 5')
self.assertEqual(result.address,' ')
self.assertTrue(result.status)
def test_guest_model(self):
""" """
result = Guest.objects.get(phone='15099925893')
self.assertEqual(result.realname,' ')
self.assertFalse(result.sign)
ビュー関数テスト
class IndexPageTest(TestCase):
""" index """
def test_index_page(self):
""" index """
response = self.client.get('/index/')
self.assertEqual(response.status_code,200)
self.assertTemplateUsed(response,'index.html')
class LoginAction(TestCase):
""" """
def setUp(self) -> None:
""" : """
User.objects.create(username='admin')
User.objects.create_user(username='admin2',email='[email protected]',password='123456')
def test_add_admin(self):
""" admin """
user = User.objects.get(username='admin')
self.assertEqual(user.username,'admin')
def test_add_admin2(self):
""" admin2 """
user = User.objects.get(username='admin2')
self.assertEqual(user.username,'admin2')
self.assertEqual(user.email,'[email protected]')
def test_login_username_password_null(self):
""" """
test_data = {'username':'','password':''}
response = self.client.post('/login_action/',data=test_data)
self.assertEqual(response.status_code,302)
def test_login_username_password_error(self):
""" """
test_data = {'username':'test','password':'123456'}
response = self.client.post('/login_action/',data=test_data)
self.assertEqual(response.status_code,302)
def test_login_action_success(self):
""" """
test_data = {'username':'admin2','password':'123456'}
response = self.client.post('/login_action/',data=test_data)
self.assertEqual(response.status_code,302)
class EventManageTest(TestCase):
""" """
def setUp(self) -> None:
#
User.objects.create_user('admin','[email protected]','123456')
Event.objects.create(name=' 3',limit=3,address=' ',status=True,start_time=get_now)
self.login_user = {'username':'admin','password':'123456'}
#
self.client.post('/login_action/', data=self.login_user)
def test_add_event_data(self):
""" : 3 """
event = Event.objects.get(name=" 3")
self.assertEqual(event.address, " ")
def test_event_success(self):
""" : 3"""
response = self.client.post('/event_manager/')
self.assertEqual(response.status_code,200)
self.assertIn(" 3".encode('utf-8'),response.content)
def test_event_search_success(self):
""" """
response = self.client.post('/search_name/')
self.assertEqual(response.status_code,200)
self.assertIn(' 3'.encode('UTF-8'),response.content)
class GuestManageTest(TestCase):
""" """
def setUp(self) -> None:
User.objects.create_user('admin','[email protected]','123456')
Event.objects.create(id=1,name=' 2',limit=3,address=' ',status=True,start_time=get_now)
Guest.objects.create(realname=' ',phone=15099925798,email='[email protected]',sign=0,event_id=1)
self.login_user = {'username':'admin','password':'123456'}
#
self.client.post('/login_action/',data=self.login_user)
def test_add_guest(self):
""" : """
guest =Guest.objects.get(realname=' ')
self.assertEqual(guest.realname,' ')
self.assertEqual(guest.phone,'15099925798')
self.assertEqual(guest.email,'[email protected]')
self.assertFalse(guest.sign)
def test_guest_success(self):
""" : """
response = 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):
""" """
response = 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)
class SignIndexActionTest(TestCase):
""" """
def setUp(self) -> None:
User.objects.create_user('admin','[email protected]','123456')
Event.objects.create(id=1, name=' 1', limit=3, address=' ', status=True, start_time=get_now)
Event.objects.create(id=2, name=' 9', limit=3, address=' ', status=True, start_time=get_now)
Guest.objects.create(realname=' ', phone=15099925798, email='[email protected]', sign=0, event_id=1) #
Guest.objects.create(realname=' ', phone=15099925700, email='[email protected]', sign=1, event_id=2) #
self.login_user = {'username':'admin','password':'123456'}
self.client.post('/login_action/',data=self.login_user)
def test_phone_null(self):
""" """
response =self.client.post('/sign_index_action/1/',{"phone":""})
self.assertEqual(response.status_code,200)
self.assertIn(' .'.encode('utf-8'),response.content)
def test_phone_error(self):
""" """
response = self.client.post('/sign_index_action/2/',{"phone":"15099925732398"})
self.assertEqual(response.status_code,200)
self.assertIn(" .".encode('UTF-8'),response.content)
def test_phone_or_eventid_error(self):
""" """
response = self.client.post('/sign_index_action/2/',{"phone":"15099925798"})
self.assertEqual(response.status_code,200)
self.assertIn(" .".encode('UTF-8'),response.content)
def test_already_sign(self):
""" """
response = self.client.post('/sign_index_action/2/',{"phone":"15099925700"})
self.assertEqual(response.status_code,200)
self.assertIn(" !.".encode('utf-8'),response.content)
def test_sign_success(self):
""" """
response = self.client.post('/sign_index_action/1/',{"phone":"15099925798"})
self.assertEqual(response.status_code,200)
self.assertIn(" !".encode('utf-8'),response.content)
ユニットテストコードの実行
"""
:
python3 manage.py test
django_web :
python3 manage.py test django_web
sign tests.py :
python3 manage.py test django_web.tests
django_web tests.py DjangoWebModelTest :
python3 manage.py test django_web.tests.DjangoWebModelTest
django_web DjangoWebModelTest ( ):
python3 manage.py test django_web.tests.DjangoWebModelTest.test_event_model
python3 manage.py test django_web -p test*.py
......
"""
実行結果
D:\my_django_guest>python3 manage.py test django_web
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
...................
----------------------------------------------------------------------
Ran 19 tests in 3.080s
OK
Destroying test database for alias 'default'...