3주차 과제 - 강민철

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

2주차 server list 구현 설명

  • Project Name과 User Name 칼럼을 기본 조회 칼럼 추가하지 않고 필터를 추가하여 필터가 적용되었을때만 표시되도록 추가.
  • 소스코드

테스트 코드 적용 (과제)

  1. filter parse 적용
  2. filter를 적용한 테스트 케이스 추가
  3. 소스코드
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 형식 비교

단위테스트 수행 결과