[PyTest] sqlalchemy.orm.exc.DetachedInstanceError

마이구미·2022년 6월 1일
0

다시 볼 것

목록 보기
5/6

상황

pytest 중 단일 테스트를 진행하면 정상 작동하는데 여러 개의 테스트를 커맨드로 실행하면 아래와 같은 에러 메세지가 발생하였다.

FAILED test/... - sqlalchemy.orm.exc.DetachedInstanceError: 
Instance <...> is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: http://sqlalche.me/e/13/bhk3)

사용하려던 객체를 삭제 후 커밋한 후에 값을 참조하려고 한 케이스를 발견했는데 같은 케이스도 아니고 마땅히 해결을 못했다.

해결 - 미완

사실 문제 자체를 해결하진 못했다. 단일로 테스트를 진행하면 되던 테스트가 한 번에 전체를 실행하면 알 수 없는 에러를 뿜으면서 죽기 상황이기에 당연히 한 번에 하나 여러 번에 하나 같다고 생각했다.

주변 다른 개발자분에게 물어본 결과 사용하는 객체도 매 테스트마다 생성을 하고 있기 때문에 테스트간 서로 영향을 준 것 같지는 않고 한 번에 실행시키면 테스트를 진행시키면 하나의 쓰레드에서 db session이 한 번 열린 뒤 테스트들이 진행되는데 각 테스트 들이 매번 세션을 열고 닫기 때문에 근본적으로 같은 테스트 환경이 아니었던 것 같다는 의견을 들었다. 따라서 한 번에 실행할 때 세션에 대한 처리를 해줄 수 있는 옵션이나 코드 자체를 수정해야 하다는 것으로 결론을 짓고 마무리했다.

혹시나 명확한 이유와 해결 방법을 알게 되면 추가해야겠다.

profile
마이구미 마시쪙

0개의 댓글