다양한 제어 유닛 테스트 및 분리 외부 종속성

첫째, 외부 종속성

외부 종속성의 일종 자주 테스트, 아래에 나열되어 있습니다 :

  1. 당신은 데이터를 저장, 데이터베이스에서로드 될 필요가있다
  2. 그것은 특정 시간에 따라 달라질 수 있습니다
  3. 당신은 웹에서 데이터를 얻을 수있다

둘째, 격리 모드

2.1 데이터 소스

대부분의 실제 테스트는 데이터의 다양한 형태는, 일반적으로, 데이터가 데이터베이스에서 읽기가 필요합니다. 여기 기술에서 소스 제어 데이터 종속성 중 일부

  • 대신 로컬 데이터베이스 파일을 사용하는
  • 사용중인 메모리 데이터베이스
  • 테스트 데이터베이스를 사용하여

2.2 자원 가상화

시스템 자원을 외부에서 제어 동작으로 구조 자원의 다른 버전을 것을, 새 버전은 내부 구현을위한 필요없이 API 기존 자원을 시뮬레이션 할 수 있습니다, 그들을 가상화. 다음 기술 :

  • 스터브 (스터브)

   시험 중 해당하는 표준 함수 호출에 대한 제공

  • 모조 (가짜)

     모방 대신 실제 객체 API의

  • 위조 (가짜)

   그것은 매우 가벼운 실현을 제공 할 수 있습니다

이 문서는 먼저 추적을 보완하기 위해 다른 방법으로 일반 기술을 설명!

다음과 같이 datetimehelper.py 코드는 다음과 같습니다

 

# 코드 목록 # 3 

","- "모듈 날짜 도우미가 제공하는 클래스 DateTimeHelper 포함 
", "날짜와 날짜 개체 작업을위한 몇 가지 유용한 방법" 

날짜 가져 


클래스 DateTimeHelper (객체) : 
    "" "A 클래스 몇 가지 편리한 날짜 / 시간을 제공 
    변환 및 유틸리티 방법 "" " 

    데프 오늘 (자기) : 
        " ""반환 오늘의 날짜 "" " 
        반환 datetime.datetime.now () 

    데프 날짜 (자기) : 
        " ""DD / MM의 형태로 반환 오늘 날짜 / YYYY "" " 
        . 리턴 self.today ()의 strftime ("% D / % m / % Y ") 

    DEF 평일 (자기)
        "" "돌아 오늘 전체 요일" "" 
        반환 self.today ().의 strftime ( "%의 A")

    데프 us_to_indian (자기, 날짜) : 
        "" "인도 스타일 미국 스타일 날짜 즉, MM / DD / YY 변환 즉, 일 / 월 / 년" "" 

        # 분할 그것을 
        mm, DD, YY = date.split ( '/' ) 
        YY = INT (전년 동기 대비)은 
        올해 그렇지 않으면 2000을 추가, 16> # 확인하는 경우 
        : 전년 동기 대비 <= 16 경우 
            전년 동기 대비 + = 2000 
        # 그것에서 날짜 객체를 생성 
        date_obj = datetime.date (년 = 전년 동기 대비, 월 = INT (mm) 일 = INT (DD)) 
        정확한 포맷에서 #는 Return 
        리턴 date_obj.strftime ( "% D / % m / % Y")

 

 

다음과 같이 테스트 코드는 다음과 같습니다

# 코드 목록 # 5 

"" "모듈 test_datetimehelper - datetimehelper 모듈 테스트를위한 단위 테스트 모듈" "" 

-이 너무 test_datetimehelper2.py로 명명 test_datetimehelper 모듈의 두 번째 버전입니다 # 참고 

유닛 테스트 가져 
오기 날짜 
수입 datetimehelper 

unittest.mock 수입 패치에서를 


클래스 DateTimeHelperTestCase (unittest.TestCase) : 
    "" "" "DateTimeHelper 클래스에 대한 단위 테스트 테스트 케이스 클래스" 
    
    데프 설정 (자동) : 
        self.obj = datetimehelper.DateTimeHelper () 

    데프 test_date (자기) : 
        "" "시험 날짜 () 방법은 "" " 

        # 테스트에 특정 날짜를 넣어 
        = my_date 날짜를.날짜 (년 = 2016, 월 = 8 일 = 16)

        # 특정 반환 값으로 '오늘날있어서 패치 
        patch.object (self.obj'현재 'RETURN_VALUE = my_date)와 : 
            대응 self.obj.date = () 
            self.assertEqual (응답 '16 / 08 / 2016 ') 

    데프 test_weekday (자기) : 
        "" "시험 평일 () 메소드" "" 

        # 테스트에 특정 날짜 넣어 
        my_date을 = datetime.datetime (년 = 2016, 월 = 8 일 = 21) 

        # 패치 투데이 '특정 반환 값 방법 
        (오늘 patch.object와 self.obj,' ', RETURN_VALUE = my_date) : 
            응답 = self.obj.weekday () 
            self.assertEqual (응답,'일요일 '            
                          ) 
    데프 test_us_india_conversion (자기) :
        "" "테스트 우리 => 인도 일자 포맷 변환" "" 

        # 테스트 몇 일자 
        D1 = 08 / 12 / 16 ' 
        D2 = 07 / / 2,014 11' 
        D3 = 04 / 29 / 00 ' 
        self.assertEqual ( self.obj.us_to_indian (D1), '12 / / 2,016 08 ') 
        self.assertEqual (self.obj.us_to_indian (D2) '11 / / 2,014 07') 
        self.assertEqual (self.obj.us_to_indian (D3) , / 2000 1929 / 04 ') 


의 경우 __name__ == "__main__": 
    unittest.main ()

  

  

 

추천

출처www.cnblogs.com/hester/p/12121617.html