우리 개발팀은 최대 80 자 길이의 PEP8 린터를 사용합니다 .
파이썬으로 단위 테스트를 작성할 때 각 테스트가 수행하는 작업을 설명하는 메서드 이름 을 갖고 싶습니다 . 그러나 이것은 종종 글자 수 제한을 초과하게 만듭니다.
다음은 너무 긴 함수의 예입니다.
class ClientConnectionTest(unittest.TestCase):
def test_that_client_event_listener_receives_connection_refused_error_without_server(self):
self.given_server_is_offline()
self.given_client_connection()
self.when_client_connection_starts()
self.then_client_receives_connection_refused_error()
내 옵션 :
더 짧은 메서드 이름을 쓸 수 있습니다!
알아요,하지만 테스트 이름의 설명을 잃고 싶지는 않습니다.
긴 이름을 사용하는 대신 각 테스트 위에 여러 줄 주석을 작성할 수 있습니다!
이것은 괜찮은 아이디어이지만 IDE (PyCharm) 내에서 테스트를 실행할 때 테스트 이름을 볼 수 없습니다.
백 슬래시 (논리적 줄 연속 문자)로 줄을 계속할 수 있습니다.
불행히도 이것은 Dan의 답변에서 언급했듯이 Python의 옵션이 아닙니다.
테스트를 멈출 수 있습니다.
이것은 어떤면에서 의미가 있지만 잘 형식화 된 테스트 스위트를 장려하는 것이 좋습니다.
줄 길이 제한을 늘릴 수 있습니다.
우리 팀은 좁은 디스플레이에서 코드를 읽을 수 있도록하는 데 도움이되므로 제한이있는 것을 좋아하므로 이것이 최선의 선택 이 아닙니다 .
test메서드의 시작 부분에서 제거 할 수 있습니다.이것은 옵션이 아닙니다. Python의 테스트 실행기는 시작하기 위해 모든 테스트 메서드가 필요
test합니다. 그렇지 않으면 선택하지 않습니다.편집 : 일부 테스트 실행기에서는 테스트 함수를 검색 할 때 정규식을 지정할 수 있지만 프로젝트에서 작업하는 모든 사람을위한 추가 설정이므로이 작업을 수행하지 않을 것입니다.
EventListener를 자체 클래스로 분리하고 별도로 테스트 할 수 있습니다.
이벤트 리스너 는 자체 클래스에 있으며 테스트되었습니다. ClientConnection 내에서 발생하는 이벤트에 의해 트리거되는 인터페이스입니다. 이런 종류의 제안은 좋은 의도를 가지고있는 것 같지만 잘못된 방향으로 원래 질문에 답하는 데 도움이되지 않습니다.
Behave 와 같은 BDD 프레임 워크를 사용할 수 있습니다 . 표현 테스트를 위해 설계되었습니다.
이것은 사실이며 앞으로 더 많이 사용하고 싶습니다. 함수 이름을 여러 줄로 나누는 방법을 여전히 알고 싶습니다.
궁극적으로 ...
파이썬에서 긴 함수 선언을 여러 줄로 분할 하는 방법이 있습니까?
예를 들면 ...
def test_that_client_event_listener_receives_
connection_refused_error_without_server(self):
self.given_server_is_offline()
self.given_client_connection()
self.when_client_connection_starts()
self.then_client_receives_connection_refused_error()
아니면 총알을 깨물고 직접 줄여야할까요?
func.__doc__