2013-07-21 1 views
2

며칠 동안 나는 Python에서 unittest 라이브러리를 올바르게 사용하는 방법을 찾으려고 노력하고 있습니다. 몇 가지 기본 사항이 있지만 이전에 만든 두 가지 기능을 테스트하여 스스로 도전하게되었습니다. 기능은 다음과 같습니다.Python에서 unittest 라이브러리를 사용하여 코드 테스트

def PatternMatch(self, message, number): 
     ret_status = 2 # 'No match' 
     ret_pattern = -1 

     for pattern in self.PatternList: 
      if pattern.active == 1 and pattern.LA == number: 
       try: 
        RegExp = re.compile(pattern.regex) 
       if RegExp.match(message): 
        ret_status = 1 
        ret_pattern = pattern.ID 
        break 

     return ret_status, ret_pattern 


    def GetPattern(self, patternID): 
     pattern = None 
     db = Database() 
     query = 'CALL PATTERN_GET' 
     query += '(@sql_err_code, @my_status, @my_msg, %s)' 
     ret = db.query(query, [patternID]) 
     if len(ret['data']) == 2: 
      pattern = Pattern(ret['data'][1]) 
     else: 
      pattern = Pattern() 

     result = {'status': ret['data'][0]} 
     return pattern, result 

어떻게 시작해야합니까? Mox 라이브러리를 사용하여 데이터베이스 연결을 조롱했습니다. 작동하지만 기능은 무엇입니까? 어떤 도움을 주셔서 감사합니다.

답변

4

는 일반적인 조언이 가능 질문의 일반성을 감안할 때 - 기본적으로 다음과 같은 수행 할 테스트 데이터 &/또는 입력을 준비해야합니다 : - 모든 결정을 모든 실행 경로를 강제로

  1. 코드 검사를 통로.
  2. 의사 결정 범위 - 위와 같지만 결정을 내리는 각 방법을 통해 - 예 : a> = 0이면 < 0, a == 0 및> 0으로 테스트해야합니다.
  3. 코너 사례 범위 - 코드가 매우 크고 작고 매우 음수이며 값이 없습니다.
  4. 예외 적용 범위 : 절에있는 코드로 제기 할 수있는 모든 예외 사항을 제기하고 올바르게 처리했는지 또는 허용해야하는지 확인하십시오.
  5. 테스트 데이터 집합에서 달성하려는 내용을 명확하게 기술하여 각 테스트 데이터 집합을 항상 시작하십시오.
관련 문제