3주차 과제 - 호세헌

필수 과제

2주차에 진행한 server list 확장 코드에서 tox를 통해 unit test를 실행시키면 Test Failed가 발생합니다.

openstackclient.tests.unit.compute 경로에 있는 server list에 대한 unit test를 수정하여 tox 실행시 모든 unit test에서 성공하도록 해주세요.

제출 내용 1: 수정된 unit test code (스크린샷 또는 실제 코드)

제출 내용 2: 아래의 예시와 같이 tox를 통해 모든 unit test 통과한 화면

테스트 실패 원인

  • 기존 코드에서 컬럼이 추가/변경되었는데, 테스트 코드의 컬럼(columns, columns_long 등)이 그대로여서 assertEqual에서 불일치 에러 발생

해결 과정

1. 테스트 컬럼 수정

변경된 서버 리스트 출력 형식에 맞게 컬럼을 수정했습니다.

def test_server_list_all_projects_option(self):
    self.data = tuple(
            ....
    )
    ...
    
    self.assertEqual(self.columns_all_projects, columns)
    self.assertEqual(self.data, tuple(data))

test_server_list_all_projects_optionassertEqual 함수를 타고 들어가 테스트 데이터를 결과값과 일치하도록 수정했습니다.

2. 테스트 데이터 구성 수정

출력 결과와 비교할 self.data의 구성 역시 컬럼에 맞게 수정했습니다.

columns_all_projects = (
		'ID',
		'Name',
		'Status',
		'Networks',
		'Image',
		'Flavor',
		# 3주차 과제
		'Project Name',
		'User Name',
)

def test_server_list_all_projects_option(self):
    self.data = tuple(
        (
            s.id,
            s.name,
            s.status,
            server.AddressesColumn(s.addresses),
            # 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,
            # 3주차 과제
            self.identity_client.users.get(s.user_id).name,
            self.identity_client.projects.get(s.project_id).name,
        )
        for s in self.servers
    )
    arglist = [
        '--all-projects',
    ]
    verifylist = [
        ('all_projects', True),
        ('long', False),
        ('deleted', False),
    ]
    parsed_args = self.check_parser(self.cmd, arglist, verifylist)
    columns, data = self.cmd.take_action(parsed_args)

    self.image_client.images.assert_called()
    self.compute_client.flavors.assert_called()
    self.assertEqual(self.columns_all_projects, columns)
    self.assertEqual(self.data, tuple(data))

self.identity_client.users.get(s.user_id).name, self.identity_client.projects.get(s.project_id).name 추가

3. 테스트 수행

아래와 같이 tox를 실행하여 모든 테스트가 정상 통과되는 것을 확인했습니다.

1개의 좋아요