필수 과제
unit test 통과한 화면
수정된 unit test code
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 0898c67b..76361da0 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -32,6 +32,7 @@ from osc_lib import utils as common_utils
from openstackclient.api import compute_v2
from openstackclient.compute.v2 import server
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
+from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
from openstackclient.tests.unit.image.v2 import fakes as image_fakes
from openstackclient.tests.unit.network.v2 import fakes as network_fakes
from openstackclient.tests.unit import utils as test_utils
@@ -4576,6 +4577,8 @@ class _TestServerList(TestServer):
'Networks',
'Image',
'Flavor',
+ 'Project Name',
+ 'User Name',
)
columns_long = (
'ID',
@@ -4588,6 +4591,8 @@ class _TestServerList(TestServer):
'Image ID',
'Flavor Name',
'Flavor ID',
+ 'Project Name',
+ 'User Name',
'Availability Zone',
'Pinned Availability Zone',
'Host',
@@ -4601,6 +4606,8 @@ class _TestServerList(TestServer):
'Networks',
'Image',
'Flavor',
+ 'Project Name',
+ 'User Name',
'Project ID',
)
@@ -4654,6 +4661,9 @@ class _TestServerList(TestServer):
# Get the command object to test
self.cmd = server.ListServer(self.app, None)
+ self.project = identity_fakes.FakeProject.create_one_project()
+ self.user = identity_fakes.FakeUser.create_one_user()
+
class TestServerList(_TestServerList):
def setUp(self):
@@ -4673,6 +4683,17 @@ class TestServerList(_TestServerList):
for s in self.servers
]
+ Project = collections.namedtuple('Project', 'id name')
+ self.identity_client.projects.list.return_value = [
+ Project(id=s.project_id, name=self.project.name)
+ for s in self.servers
+ ]
+
+ User = collections.namedtuple('User', 'id name')
+ self.identity_client.users.list.return_value = [
+ User(id=s.user_id, name=self.user.name) for s in self.servers
+ ]
+
self.data = tuple(
(
s.id,
@@ -4682,6 +4703,8 @@ class TestServerList(_TestServerList):
# Image will be an empty string if boot-from-volume
self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
self.flavor.name,
+ self.project.name,
+ self.user.name,
)
for s in self.servers
)
@@ -4737,6 +4760,8 @@ class TestServerList(_TestServerList):
s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
self.flavor.name,
s.flavor['id'],
+ self.project.name,
+ self.user.name,
getattr(s, 'availability_zone'),
getattr(s, 'pinned_availability_zone', ''),
server.HostColumn(getattr(s, 'hypervisor_hostname')),
@@ -4774,6 +4799,8 @@ class TestServerList(_TestServerList):
# Image will be an empty string if boot-from-volume
self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
self.flavor.name,
+ self.project.name,
+ self.user.name,
s.project_id,
)
for s in self.servers
@@ -4857,6 +4884,8 @@ class TestServerList(_TestServerList):
# Image will be an empty string if boot-from-volume
s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
s.flavor['id'],
+ self.project.name,
+ self.user.name,
)
for s in self.servers
)
@@ -4888,6 +4917,8 @@ class TestServerList(_TestServerList):
# Image will be an empty string if boot-from-volume
s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
s.flavor['id'],
+ self.project.name,
+ self.user.name,
)
for s in self.servers
)
@@ -5254,6 +5285,8 @@ class TestServerList(_TestServerList):
s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
self.flavor.name,
s.flavor['id'],
+ self.project.name,
+ self.user.name,
getattr(s, 'availability_zone'),
getattr(s, 'pinned_availability_zone', ''),
server.HostColumn(getattr(s, 'hypervisor_hostname')),
@@ -5310,6 +5343,8 @@ class TestServerList(_TestServerList):
s.image['id'] if s.image else server.IMAGE_STRING_FOR_BFV,
self.flavor.name,
s.flavor['id'],
+ self.project.name,
+ self.user.name,
getattr(s, 'availability_zone'),
getattr(s, 'pinned_availability_zone', ''),
server.HostColumn(getattr(s, 'hypervisor_hostname')),
@@ -5337,6 +5372,8 @@ class TestServerListV273(_TestServerList):
'Networks',
'Image',
'Flavor',
+ 'Project Name',
+ 'User Name',
)
columns_long = (
'ID',
@@ -5386,6 +5423,17 @@ class TestServerListV273(_TestServerList):
# called
self.compute_client.flavors = mock.NonCallableMock()
+ Project = collections.namedtuple('Project', 'id name')
+ self.identity_client.projects.list.return_value = [
+ Project(id=s.project_id, name=self.project.name)
+ for s in self.servers
+ ]
+
+ User = collections.namedtuple('User', 'id name')
+ self.identity_client.users.list.return_value = [
+ User(id=s.user_id, name=self.user.name) for s in self.servers
+ ]
+
self.data = tuple(
(
s.id,
@@ -5395,6 +5443,8 @@ class TestServerListV273(_TestServerList):
# Image will be an empty string if boot-from-volume
self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
self.flavor.name,
+ self.project.name,
+ self.user.name,
)
for s in self.servers
)
@@ -5543,6 +5593,8 @@ class TestServerListV273(_TestServerList):
server.AddressesColumn(None),
'',
'',
+ '',
+ '',
)
self.assertEqual(expected_row, partial_server)
설명
-
_TestServerList
Project Name, User Name 컬럼 추가 -
identity_fakes 추가

-
_TestServerList.setup()
self.project, self.user 를 Fake Object로 추가 -
TestServerList.setup()
과제 2에서 추가한 identity_client.projects.list(), identity_client.users.list() 호출 시 Fake Object를 반환하도록 Stub 추가
assertEqual에서 expected 값으로 쓰이는 self.data에 project_name, user_name 추가 -
TestServerList.test_server_list_long_option()
테스트 코드가 성공할 수 있도록 self.data(expected)에 self.project.name, self.user.name 추가 -
tox 실행 후 실패하는 테스트 코드에 5번 과정 반복
-
TestServerListV273 클래스에 대해서 4~6번 과정 진행





