From a99a6b694659c75f9542b798d4ff0c3752f6176e Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 23 Aug 2016 22:19:39 +0800 Subject: [PATCH] Split tests file in tests module --- apps/__init__.py | 7 ++ apps/users/tests/__init__.py | 0 apps/users/tests/base.py | 24 +++++ apps/users/{tests.py => tests/test_models.py} | 91 ++----------------- apps/users/tests/test_views.py | 58 ++++++++++++ 5 files changed, 99 insertions(+), 81 deletions(-) create mode 100644 apps/__init__.py create mode 100644 apps/users/tests/__init__.py create mode 100644 apps/users/tests/base.py rename apps/users/{tests.py => tests/test_models.py} (55%) create mode 100644 apps/users/tests/test_views.py diff --git a/apps/__init__.py b/apps/__init__.py new file mode 100644 index 000000000..f93d0bec7 --- /dev/null +++ b/apps/__init__.py @@ -0,0 +1,7 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# + + +if __name__ == '__main__': + pass diff --git a/apps/users/tests/__init__.py b/apps/users/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/apps/users/tests/base.py b/apps/users/tests/base.py new file mode 100644 index 000000000..2a3007e49 --- /dev/null +++ b/apps/users/tests/base.py @@ -0,0 +1,24 @@ +# ~*~ coding: utf-8 ~*~ + + +from random import choice +import forgery_py + +from users.models import User, UserGroup, Role, init_all_models + + +def gen_username(): + return forgery_py.internet.user_name(True) + + +def gen_email(): + return forgery_py.internet.email_address() + + +def gen_name(): + return forgery_py.name.full_name() + + +def get_role(): + role = choice(Role.objects.all()) + return role \ No newline at end of file diff --git a/apps/users/tests.py b/apps/users/tests/test_models.py similarity index 55% rename from apps/users/tests.py rename to apps/users/tests/test_models.py index f76d14e3d..c9d6fe354 100644 --- a/apps/users/tests.py +++ b/apps/users/tests/test_models.py @@ -1,33 +1,14 @@ # ~*~ coding: utf-8 ~*~ -from random import choice -import forgery_py from django.utils import timezone from django.shortcuts import reverse from django.test import TestCase, Client, TransactionTestCase -from django.test.utils import setup_test_environment -from django.db import IntegrityError, transaction -from .models import User, UserGroup, Role, init_all_models +from django.db import IntegrityError +from users.models import User, UserGroup, Role, init_all_models from django.contrib.auth.models import Permission -from django.conf import settings - -def gen_username(): - return forgery_py.internet.user_name(True) - - -def gen_email(): - return forgery_py.internet.email_address() - - -def gen_name(): - return forgery_py.name.full_name() - - -def get_role(): - role = choice(Role.objects.all()) - return role +from .base import gen_name, gen_username, gen_email, get_role class UserModelTest(TransactionTestCase): @@ -35,7 +16,7 @@ class UserModelTest(TransactionTestCase): init_all_models() # 创建一个用户用于测试 - role = choice(Role.objects.all()) + role = get_role() user = User(name='test', username='test', email='test@email.org', role=role) user.save() @@ -46,7 +27,7 @@ class UserModelTest(TransactionTestCase): @property def role(self): - return choice(Role.objects.all()) + return get_role() # 创建一个姓名一致的用户, 应该创建成功 def test_user_name_duplicate(self): @@ -61,20 +42,16 @@ class UserModelTest(TransactionTestCase): # 创建一个用户名一致的用户, 应该创建不成功 def test_user_username_duplicate(self): user2 = User(username='test', email=gen_email(), role=self.role) - try: + + with self.assertRaises(IntegrityError): user2.save() - self.assertTrue(0, 'Duplicate allowed.') - except IntegrityError: - pass # 创建一个Email一致的用户,应该创建不成功 def test_user_email_duplicate(self): user3 = User(username=gen_username(), email='test@email.org', role=self.role) - try: + + with self.assertRaises(IntegrityError): user3.save() - self.assertTrue(0, 'Duplicate allowed.') - except IntegrityError: - pass # 用户过期测试 def test_user_was_expired(self): @@ -86,7 +63,7 @@ class UserModelTest(TransactionTestCase): # 测试用户默认会输入All用户组 def test_user_with_default_group(self): - role = choice(Role.objects.all()) + role = get_role() user = User(username=gen_username(), email=gen_email(), role=role) user.save() @@ -129,52 +106,4 @@ class UserGroupModelTestCase(TransactionTestCase): pass -class UserListViewTests(TransactionTestCase): - def setUp(self): - init_all_models() - - def test_a_new_user_in_list(self): - username = gen_username() - user = User(username=username, email=gen_email(), role=get_role()) - user.save() - response = self.client.get(reverse('users:user-list')) - - self.assertContains(response, username) - - def test_list_view_with_admin_user(self): - response = self.client.get(reverse('users:user-list')) - self.assertEqual(response.status_code, 200) - self.assertContains(response, 'Admin') - self.assertEqual(response.context['user_list'].count(), User.objects.all().count()) - - def test_pagination(self): - settings.CONFIG.DISPLAY_PER_PAGE = 10 - User.generate_fake(count=20) - response = self.client.get(reverse('users:user-list')) - self.assertEqual(response.context['is_paginated'], True) - - -class UserAddTests(TestCase): - def setUp(self): - init_all_models() - - def test_add_a_new_user(self): - username = gen_username() - data = { - 'username': username, - 'comment': '', - 'name': gen_name(), - 'email': gen_email(), - 'groups': [UserGroup.objects.first().id, ], - 'role': get_role().id, - 'date_expired': '2086-08-06 19:12:22', - } - - response = self.client.post(reverse('users:user-add'), data) - self.assertEqual(response.status_code, 302) - self.assertEqual(response['location'], reverse('users:user-list')) - - response = self.client.get(reverse('users:user-list')) - self.assertContains(response, username) - diff --git a/apps/users/tests/test_views.py b/apps/users/tests/test_views.py new file mode 100644 index 000000000..bb8b8b1d5 --- /dev/null +++ b/apps/users/tests/test_views.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# + +from users.models import User, UserGroup, Role, init_all_models +from django.shortcuts import reverse +from django.test import TestCase, Client, TransactionTestCase + +from .base import gen_username, gen_name, gen_email, get_role + + +class UserListViewTests(TransactionTestCase): + def setUp(self): + init_all_models() + + def test_a_new_user_in_list(self): + username = gen_username() + user = User(username=username, email=gen_email(), role=get_role()) + user.save() + response = self.client.get(reverse('users:user-list')) + + self.assertContains(response, username) + + def test_list_view_with_admin_user(self): + response = self.client.get(reverse('users:user-list')) + self.assertEqual(response.status_code, 200) + self.assertContains(response, 'Admin') + self.assertEqual(response.context['user_list'].count(), User.objects.all().count()) + + def test_pagination(self): + User.generate_fake(count=20) + response = self.client.get(reverse('users:user-list')) + self.assertEqual(response.context['is_paginated'], True) + + +class UserAddTests(TestCase): + def setUp(self): + init_all_models() + + def test_add_a_new_user(self): + username = gen_username() + data = { + 'username': username, + 'comment': '', + 'name': gen_name(), + 'email': gen_email(), + 'groups': [UserGroup.objects.first().id, ], + 'role': get_role().id, + 'date_expired': '2086-08-06 19:12:22', + } + + response = self.client.post(reverse('users:user-add'), data) + self.assertEqual(response.status_code, 302) + self.assertEqual(response['location'], reverse('users:user-list')) + + response = self.client.get(reverse('users:user-list')) + self.assertContains(response, username) +