# 3주차 과제 - 강민철

**URL:** <https://forum.openinfra-kr.org/t/topic/174>\
**Category:** 컨트리뷰션\
**Tags:** 2025컨트리뷰션, 컨트리뷰션\
**Created:** [8월 3, 2025, 2:07오후 UTC](https://forum.openinfra-kr.org/t/topic/174 "2025-08-03T14:07:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![platanus](https://forum.openinfra-kr.org/letter_avatar_proxy/v4/letter/p/ecb155/32.png) [@platanus](https://forum.openinfra-kr.org/u/platanus)\
**Post date:** [8월 3, 2025, 2:07오후 UTC](https://forum.openinfra-kr.org/t/topic/174/1 "2025-08-03T14:07:35Z")

</div>

### server list 확장 코드에서 tox 로 실행하는 unit test 통과하게 만들기

#### 2주차 server list 구현 설명

- Project Name과 User Name 칼럼을 기본 조회 칼럼 추가하지 않고 필터를 추가하여 필터가 적용되었을때만 표시되도록 추가.
- [소스코드](https://github.com/platanus-kr/python-openstackclient/commit/b8ffed95e10329eec260c79bc65d62b44c39a012)

#### 테스트 코드 적용 (과제)

1. filter parse 적용
2. filter를 적용한 테스트 케이스 추가
3. [소스코드](https://github.com/platanus-kr/python-openstackclient/commit/7619fad399de7fded4130e517b2154f08d454776)

##### 1. filter parse 부분

- `test_server.py` 내 여러 fixture를 만들기 위해 사용하는 `_TestServerList`에 Project Name과 User Name 칼럼이 적용된 칼럼을 추가
- 2주차에 칼럼 옵션으로 기능을 구현했기 때문에 `test_server_list_column_option()` 테스트 케이스에 Project Name과 User Name 추가
- 테스트 내 기본으로 제공되는 인스턴스 mock에는 Project Name과 User Name 데이터가 없어 테스트 실패.

##### 2. filter 를 적용한 테스트 케이스 추가

- `-c project_name -c user_name` 인자를 사용하는 테스트 케이스를 추가 → `test_server_list_with_project_and_user_columns()`

**새로운 인스턴스 조회 mock 추가**

- 1 에서 인스턴스 mock에 Project Name과 User Name이 없기 때문에 이를 추가하려면 `fakes.py/create_one_server()`에 해당 칼럼을 추가해야 하지만, 여기에 추가해보니 다른 테스트가 실패함.
- 다만 노바CLI 테스트가 모두 `fakes.py/create_one_server()` 또는 그를 감싸는 래퍼를 쓰는것은 아니고, 자체적으로 인스턴스 mock을 만드는 메소드를 쓰는 경우가 있음.
- 따라서 두 필드가 추가된 mock을 만들어주는`fakes.py/create_one_server_with_extra_columns()` 를 추가

**테스트 메소드 구현**

- given (mock 내역)
  - `identify.find_user()`, `identify.find_project()` 추가 (Mock 데코레이터)
  - `create_one_server_with_extra_columns()` 호출하여 servers 대체

- when
  - 인자 : `-c project_name -c user_name`

- then
  - column 비교
  - data 형식 비교

**단위테스트 수행 결과**

 ![스크린샷 2025-08-03 23.05.09](https://forum.openinfra-kr.org/uploads/default/original/1X/cbd2b584f2a149fcbf439244f089acdf1b8b2c24.png)
