seminar-2020 icon indicating copy to clipboard operation
seminar-2020 copied to clipboard

tests_user.py에 같은 request가 2번 있습니다.

Open gina0605 opened this issue 4 years ago • 7 comments

tests_user.py를 보면 같은 request를 2번 보내는 것 같습니다. (29~42번 줄, 95~108번 줄)

그 이유가 궁금합니다. 의도치 않은 부분이었나요, 아니면 2번 확인하는 이유가 있나요?

gina0605 avatar Oct 01 '20 16:10 gina0605

서로 다른 TestCase뿐 아니라 설령 같은 TestCase에 속해 있더라도 test method가 다르면 기본적으로는 독립적인 환경이라(그리고 그래야 한다고) 생각하시면 됩니다. 모든 test method 각각에 앞서 해당 TestCase의 setUp(), 각각 사후적으로 tearDown()이 실행될 뿐입니다. 과제 3의 내용에도 적혀있듯, 각 test들은 가급적 명확히 하나의 내용을 검증해야 하며, 별개의 test들은 결코 서로 의존성이 있어서는 안됩니다. 이미 공유드린 문서이지만, 참고로 https://docs.djangoproject.com/en/3.1/topics/testing/overview/#order-in-which-tests-are-executed 요런 부분도 있습니다.

davin111 avatar Oct 01 '20 17:10 davin111

그러면 아래처럼 이해하면 될까요?

  • test_post_user_duplicated_username: username이 중복되는 경우를 확인
  • test_post_user: body에 누락된 내용이 없는 경우 잘 작동하는지 확인

하지만 그렇다면 test_post_user_duplicated_usernametest_post_user의 하위호환인 것 같습니다.

그냥 테스트하고자 하는 상황이 하위호환이라 생각하면 될까요?

gina0605 avatar Oct 01 '20 17:10 gina0605

'하위호환'이라는 말씀이 잘 이해되지 않습니다. 그냥 POST /api/v1/user/에 대해서 여러 경우를 병렬적으로 test하는 것이라고 생각하시면 좋을 듯합니다. test_post_user_incomplete_request()도 있구요. 그리고 하위호환이 논리적으로 무엇인지 잘 모르겠으나, 그렇게 별도로 test가 분리되어도 이상할 것은 없는 듯합니다. 다시 강조하듯 서로 다른 test들 간에 의존성만 없으면요.

davin111 avatar Oct 01 '20 17:10 davin111

아하 이제 이해되었습니다. test_post_user()의 앞부분이 test_post_user_duplicated_username()와 일치한다는 의미였군요. 네, 사실 이것은 굳이 포함되지 않아도 되는 부분인 것 같은데 들어간 것 같습니다. https://github.com/wafflestudio/rookies/blob/master/backend/seminar3/tests_user.py#L113 부터가 해당 test의 본질이라고 생각해주시면 될듯합니다.

davin111 avatar Oct 01 '20 17:10 davin111

아 네 comment 달고 있었는데 답변 주셨네요. 감사합니다 :)

gina0605 avatar Oct 01 '20 17:10 gina0605

넵, 첫 메시지에서 123에서 136 line이 아니라 95에서 108 line이라고 하셔야 할 듯합니다.

davin111 avatar Oct 01 '20 17:10 davin111

앗 죄송합니다. 제가 잘못 적었군요... 수정하겠습니다!

gina0605 avatar Oct 01 '20 17:10 gina0605