첫째, 외부 종속성
외부 종속성의 일종 자주 테스트, 아래에 나열되어 있습니다 :
- 당신은 데이터를 저장, 데이터베이스에서로드 될 필요가있다
- 그것은 특정 시간에 따라 달라질 수 있습니다
- 당신은 웹에서 데이터를 얻을 수있다
둘째, 격리 모드
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 ()