before(:all) VS before(:each)
before(:all)을 하면 모든 알스펙이 돌기 전에 한번만 블럭을 실행하는 거고, before(:each)는 각각 알스펙이 돌 때 한번씩 여러번 실행되는 걸 의미한다.
아래와 같은 케이스일 때 before(:all)을 사용하면 좋았다.
카우치베이스 테스트코드를 작성할 때 캐시에 값이 남아있어서 테스트코드가 마구 깨지는 케이스가 있었다. 그래서 각 테스트코드가 돌기전에 캐시들을 flush 해주는 함수를 넣어서, 캐시들을 다 날려버려줬었다. 그런데 flush는 응답속도가 느려서 테스트코드를 돌리는 데에 시간이 많이 걸렸다. 그래서 eache(:all) 블럭 안에 캐시를 flush하는 기능을 넣어서 테스트 코드를 돌릴 때 한번만 캐시를 날리도록 고쳤더니 조금 속도가 빨라졌었다.
주의사항
all으로 생성한 팩토리걸은 사용 후 삭제해줘야 한다. 왜냐면 all에서 팩토리걸로 생성된 데이터는 자동으로 삭제가 되지 않는다.
이번에.. 삽질을 했다. all을 알게되어 팩토리걸도 all에서 사용해서 썼는데, 자동으로 삭제가 안되어서
다음 테스트코드를 돌릴 때 계속 테스트코드가 깨지는 이슈가 있었다 ㅠ_ㅠ
'소프트웨어-이야기 > 테스트-자동화' 카테고리의 다른 글
(Django) Rspec VS PyTest (0) | 2018.06.15 |
---|---|
(Django) 마이그레이트를 하지 않고 PyTest 사용하기 (2) | 2018.06.15 |
(테스트환경)로컬에 REDIS 환경 만들기 (0) | 2017.07.23 |
[rails]테스트코드 - Rspec (0) | 2017.04.22 |
[Rspec]테스트 할 코드에 원하는 메소드가 실행되고 있는지 확인하기 (0) | 2015.08.18 |