2017-11-01 12 views
1

테스트가 실패 할 때 모든 실패한 메시지에 액세스하여 알림을 만들려고합니다. 이 추가하는 시도 :after_all 후크에서 오류 메시지에 액세스하는 방법

def after_all(context): 
    if context.failed == True: 
     print('Why does none of this work?') 
     print('stdout_capture length %d' % context.stdout_capture.len) 
     print('stdout value: %s' % context.stdout_capture.getvalue()) 
     print('stderr_capture length %d' % context.stderr_capture.len) 
     print('stderr value: %s' % context.stderr_capture.getvalue()) 
     print('context.log_capture.buffer: %s' % context.log_capture.buffer) 
     for item in context.log_capture.buffer: 
      print('this is a log message: %s' % item.getMessage()) 

def after_feature(context, feature): 
    if context.feature.status == 'failed': 
     logging.warning(context.feature.name) 

을 그리고 실패 주장을 설정하지만, 마지막에 출력은 항상 : 정말 느낌

stdout_capture length 0 
stdout value: 
stderr_capture length 0 
stderr value: 
context.log_capture.buffer: [] 

기능 또는 시나리오의 목록을 얻을 수있는 쉬운 방법이 있어야한다 이메일이나 Webhook에 추가하여 설명력을 높이지 못했지만 뭔가를 놓친 것처럼 느껴졌습니다. 모든 단계에서 실패한 목록에 액세스하는 가장 쉬운 방법은 무엇입니까?

답변

0

Behave는 테스트 실행 중에 발생한 모든 예외를 캡처하여 주어진 시나리오가 실패한 후에도 계속 진행할 수 있습니다. 예외가 실제로 발생하지 않습니다. 행동 소스 코드에서 behave\model 아래의 클래스 Step에서 작동하는 방식을 살펴볼 수 있습니다. (내 프로젝트 중 하나에 무슨 짓을하는)이에 후크

한 가지 방법은 내가이

def before_step(context, step): 
    """This is executed before each step""" 

    step.store_exception_context = store_exception_context_patch 
을 수행 할 before_step 훅을 사용 개인적으로

def store_exception_context(self, exception): 
    self.exception = exception 
    self.exc_traceback = sys.exc_info()[2] 

원숭이 패치 store_exception_context이다

달성하려는 또 다른 방법은 Behav의 실행 옵션을 통해 json과 같은 특정 출력 형식으로 결과를 생성 한 다음 테스트 실행 후 결과 출력을 사후 처리하는 것입니다.