1- from unittest .mock import Mock , patch
1+ from unittest .mock import patch
22
33from django .test import TestCase
4- from django . contrib . auth . models import User , Group
4+ from model_mommy import mommy
55
6- from Core .models import (WorkOrder , SubWorkOrder ,
7- UserInfo , Department )
6+ from Core .models import Department
87
98
109class UserInfoTest (TestCase ):
1110 def test_str (self ):
12- user_info = UserInfo ()
13- user = Mock (spec = User )
14- user ._state = Mock ()
15- user .username = 'username'
16- user .first_name = 'first_name'
17- user_info .user = user
11+ username = 'username'
12+ name = 'name'
13+ user_info = mommy .prepare (
14+ 'UserInfo' , user__username = username , user__first_name = name )
1815 expected_str = '{}(用户名:{})' .format (
19- user . first_name , user . username )
16+ name , username )
2017 self .assertEqual (str (user_info ), expected_str )
2118
2219
23- def return_fake_department ():
24- department = Department ()
25- group = Mock (spec = Group )
26- group ._state = Mock ()
27- group .name = 'group'
28- group .id = 5
29- department .group = group
30-
31- def _wrapper ():
32- return [department ]
33- return _wrapper
34-
35-
3620class DepartmentTest (TestCase ):
3721 def test_str (self ):
38- department = Department ()
39- group = Mock (spec = Group )
40- group ._state = Mock ()
41- group .name = 'group'
42- department .group = group
43- expected_str = 'group'
44- self .assertEqual (str (department ), expected_str )
22+ name = 'group'
23+ department = mommy .prepare ('Department' , group__name = name )
24+ self .assertEqual (str (department ), name )
4525
46- @patch ('Core.models.auth.Department.objects.all' , return_fake_department ())
47- def test_get_departments_dict (self ):
48- departments = {d .group .name : d .id for d in Department .objects .all ()}
26+ @patch ('Core.models.auth.Department.objects' )
27+ def test_get_departments_dict (self , mocked_objects ):
28+ objects = mommy .prepare ('Department' , _quantity = 4 )
29+ mocked_objects .all .return_value = mocked_objects
30+ mocked_objects .select_related .return_value = objects
31+ departments = {
32+ d .group .name : d .id
33+ for d in Department .objects .all ().select_related ('group' )}
4934 for key , val in Department .get_departments_dict ().items ():
5035 self .assertIn (key , departments )
5136 self .assertEqual (val , departments [key ])
@@ -54,28 +39,29 @@ def test_get_departments_dict(self):
5439 def test_special_department (self , mocked_queryset ):
5540 mocked_queryset .return_value = mocked_queryset
5641 mocked_queryset .filter .return_value = mocked_queryset
57- mocked_queryset .get .return_value = None
58- self .assertEqual (Department .distribution .get (), None )
59- self .assertEqual (Department .process .get (), None )
60- self .assertEqual (Department .procurement .get (), None )
61- self .assertEqual (Department .production .get (), None )
42+ mocked_queryset .select_related .return_value = mocked_queryset
43+ dep = mommy .prepare ('Department' )
44+ mocked_queryset .get .return_value = dep
45+ self .assertEqual (Department .distribution .get (), dep )
46+ self .assertEqual (Department .process .get (), dep )
47+ self .assertEqual (Department .procurement .get (), dep )
48+ self .assertEqual (Department .production .get (), dep )
6249
6350
6451class WorkOrderTest (TestCase ):
6552 def test_str (self ):
66- uid = '123456 '
67- work_order = WorkOrder ( uid = uid )
53+ uid = '1 '
54+ work_order = mommy . prepare ( 'WorkOrder' , uid = uid )
6855 self .assertEqual (str (work_order ), uid )
6956
7057
7158class SubWorkOrderTest (TestCase ):
7259 def test_str (self ):
73- sub_order = SubWorkOrder ()
74- work_order = Mock (spec = WorkOrder )
75- work_order ._state = Mock ()
76- work_order .__str__ = Mock ()
77- work_order .__str__ .return_value = '1'
78- sub_order .work_order = work_order
79- sub_order .index = 1
60+ sub_order = mommy .prepare ('SubWorkOrder' , work_order_id = '1' , index = 1 )
8061 expected_str = '1-1'
8162 self .assertEqual (str (sub_order ), expected_str )
63+
64+ def test_uid (self ):
65+ sub_order = mommy .prepare ('SubWorkOrder' , work_order__uid = '5' , index = 1 )
66+ expected_str = '5-1'
67+ self .assertEqual (sub_order .uid , expected_str )
0 commit comments