2017-10-17 5 views
0

저는 Sandi Metz의 단위 테스트 규칙을 적용하여 실제로 공개 측에 영향을 미치는 메시지 만 공개하고 공용 항목을 테스트하여 간접적으로 모든 개인적인 것들을 테스트하려고합니다.클래스의 공용 속성을 설정하는 경우 유닛 테스트 __init__ 메소드를 사용합니까?

따라서 구현을 테스트하는 것을 피하고 언제든지 변경할 수 있습니다.

제 질문은 : __init__ 메서드를 공개적으로 사용할 수있는 인스턴스 특성을 설정하는 경우 테스트해야합니다.

기본적으로 init이 개인적인 방법으로 처리되어야하는지 잘 모르겠다. (공공 물건을 설정하면 유닛 테스트를 받아야한다.)

예 :

MyClass(object): 

    def __init__(self, public_parameter_1, public_param_2) 

     self.public_parameter_1 = public_parameter_1 
     self.public_parameter_2 = public_parameter_2 

시험 사용 pytest : 파이썬은 정말 개인 속성이 없기 때문에

def test_instance(): 

    instance = MyClass(1, 2) 

    assert instance.public_parameter_1 == 1 
    assert instance.public_parameter_2 == 2 

답변

1

그것은 조금 까다로운. 밑줄로 시작하지 않는 모든 것을 테스트 할 수 있거나 모든 것을 테스트 할 수 있다고 생각하지만 일반적으로 일부 계산이나 논리를 필요로하는 것을 테스트하는 데만 제한됩니다. 당신이주는 예제에서, 나는이 두 가지 간단한 과제를 테스트하는 것을 고맙게 생각하지 않을 것이다.

__init__() 방법을 확인하기 위해 뭔가를하고 싶다면 다른 방법으로 액세스하는 모든 속성에 __init__() 동안 할당 된 모든 속성이 있는지 확인하기 위해 어떤 종류의 linting 도구를 사용할 수 있습니다. 아마 모든 속성에 대한 명시 적 테스트를 작성하는 것보다 효율적입니다.