Execution hook order in Python behave library

dahunyoo·2021년 2월 27일
0
post-thumbnail

behave library에서의 hook의 실행 순서에 대해 알아봅니다.


Context attribute

일단, behave 에서는 메소드와 메소드 간 attribute를 공유하게 도와주는 context 가 있습니다만, 이것은 step, scenario, feature layer대로 실행됩니다. 그리고 이 context attribute는 각각의 layer가 종료되고 다시 시작되는 경우에는 초기화가 됩니다.

hook

behave 의 hook에는 아래와 같은 종류가 있습니다.

before_all(context)
after_all(context)
before_feature(context, feature)
after_feature(context, feature)
before_tag(context, tag)
after_tag(context, tag)
before_scenario(context, scenario)
after_scenario(context, scenario)
before_step(context, step)
after_step(context, step)

Execution order

또한 hook의 실행순서는 아래와 같습니다.

before_all()
   before_feature()
      before_tag()
         before_scenario()
            before_step()
            after_step()
         after_scenario()
      after_tag()
   after_feature()
after_all()

이때 hook을 사용하여 context 내부 attribute를 다른 시나리오로 공유하고자 할 수 있는데, 위 hook의 실행순서를 잘 확인하여 구성해야겠습니다.
참고로 scenario 보다 tag가 빠른 순서로 실행된다는 것을 참고하여야겠습니다.

profile
QA Engineer

0개의 댓글