단위 테스트 및 작성/예외 사용에 새로운 기능입니다. 현재 모범 사례를 배우고이를 내 프로젝트에 통합하기 위해 많은 노력을 기울이고 있습니다. 내가 읽은 몇 가지 것들의 테스트로서 간단한 계약 모듈을 썼다. 아래는 서로 의존하는 몇 가지 인수가있는 계약 클래스의 init입니다.클래스의 __init__ 메소드에 대한 단위 테스트하기
인수 의존성을 기반으로 init 메소드에 대한 테스트를 작성하는 방법은 무엇입니까?
미리 감사드립니다.
def __init__(self, code, description ,contract_type,
start_date ,end_date ,reminder_date,
customer=None, isgroup=False, vendor=None,
discount_perc=None):
contract_types = ['item','vendor']
self.code = code
self.description = description
self.contract_type = contract_type
self.start_date = start_date
self.end_date = end_date
self.reminder_date = reminder_date
if contract_type not in contract_types:
raise AttributeError("Valid contract types are 'item' & 'vendor'")
if isgroup:
if customer:
raise AttributeError("Group contracts should not have 'customer' passed in")
self.is_group_contract = True
else:
if customer:
self.add_customer(customer)
else:
raise AttributeError('Customer required for non group contracts.')
if contract_type == 'vendor':
if vendor and discount_perc:
self.vendor = vendor
self.discount_perc = discount_perc
else:
if not vendor:
raise AttributeError('Vendor contracts require vendor to be passed in')
if not discount_perc:
raise AttributeError('Vendor contracts require discount_perc(Decimal)')
이 유형의 질문이 적합하지 않은 경우 어디로가는 것이 좋을까요?
IIRC, programmers.stackexchange.com은 코드 검토/리팩터링 질문에 더 좋습니다. –
즉, 한 가지 아이디어는 일이 잘못 될 수있는 방법의 수를 단순히 줄이는 것입니다. 별도의'customer'와'isgroup' 매개 변수를 갖는 대신'customer'에 대한 특별한'GROUP' 값을 사용하여 그룹 계약을 표시하십시오. –
두 개의 첫 번째 질문이 CodeReview에서 더 잘 맞지만 세 번째 테스트 (테스트)는 적합하다고 생각합니다. 어쩌면 질문을 두 개로 나눌 수 있습니다. – joaquin