Python Unittest Performance 개선 (with. hashlib)

최대 1 분 소요

Pycharm Profile 기능을 활용하여, 유닛테스트 속도 개선

찾아보거나 알게된 배경


faker사용시, 도메인을 동일하게 설정하고, email 호출하여 랜덤 생성시, 중복되는 문제가 있어서 관련 메서드를 작성하고 있었는데, 너무 느려서 확인해봤다.

요약


  • 테스트 데이터를 만들기 위해 UserFactory를 호출하는데, 비밀번호 생성을 위해 django.contrib.auth.hashers.make_password를 호출하고 있음.
  • django.contrib.auth.hashers.make_password는 내부적으로 hashlib.pbkdf2_hmac를 호출하고 있었고, 해당 메서드가 사용시간의 80%를 점유함
  • factory에서 필요한 상황이 아니라면, make_password를 호출하지 않도록 개선.
  • 프로파일 결과에서 해당 메서드가 오래걸리는것을 확인

  • Pycharm Profile profile

  • UserFactory 에서 옵션을 통해, make_password 호출 여부를 결정할 수 있도록 개선
  • 개선 결과 | stage | before | after | | ——- | ——- | ——— | | local | 1m33sec | 23sec | | jenkins | 11min | 8min 7sec |