unittest 시, 데이터는 setUpTestData에서!
유닛테스트 퍼포먼스 약간 향상
찾아보거나 알게된 배경
테스트 러닝타임이 너무 오래걸려서, 해당 시간을 줄일 방법이 없을까 하다가 데이터를 각 테스트 method가 아닌 setUpTestData에서 만들면 되겠다 싶어서 진행해봤다.
요약
공통되는 데이터를 만들 때는 setUpTestData에서 데이터를 만들어주는게 훨씬 낫다
내용
- 기존에 setup이나 테스트 안에서 데이터 만들어주는 부분이 있으면, 쿼리시간때문에 테스트시간이 길어진다 가정하고 있었음
- 하나는 기존대로 test 내에서 각 데이터들을 만들어주게 유지
- 하나는 기존에서 데이터를 만들어주는 부분에 대해서 setupTestData로 빼도록 함
- 각 동일한 테스트에 대해 10개까지 늘린 후(복붙), 테스트 속도 비교 진행
로컬에서 실행시, 2.9s -> 1.9s 로 감소
- before code:
def test_asdf(self): item = generate_any_item() - after code:
@classmethod def setUpTestData(cls): cls.item = generate_any_item() def test_asdf(self): ...
참고자료
직접해봄