Nhóm phát triển của chúng tôi sử dụng linter PEP8 yêu cầu độ dài dòng tối đa là 80 ký tự .
Khi tôi viết các bài kiểm tra đơn vị trong python, tôi muốn có tên phương thức mô tả để mô tả những gì mỗi bài kiểm tra thực hiện. Tuy nhiên điều này thường dẫn đến việc tôi vượt quá giới hạn nhân vật.
Đây là một ví dụ về một hàm quá dài ...
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()
Tùy chọn của tôi:
Bạn chỉ có thể viết các tên phương thức ngắn hơn!
Tôi biết, nhưng tôi không muốn làm mất đi tính mô tả của tên bài kiểm tra.
Bạn có thể viết bình luận nhiều dòng phía trên mỗi bài kiểm tra thay vì sử dụng tên dài!
Đây là một ý tưởng hay, nhưng sau đó tôi sẽ không thể nhìn thấy tên thử nghiệm khi chạy thử nghiệm bên trong IDE của mình (PyCharm).
Có lẽ bạn có thể tiếp tục các dòng bằng dấu gạch chéo ngược (một ký tự tiếp tục dòng hợp lý).
Thật không may, đây không phải là một tùy chọn trong Python, như đã đề cập trong câu trả lời của Dan.
Bạn có thể ngừng viết bài kiểm tra của mình.
Điều này có ý nghĩa theo một số cách, nhưng thật tốt khi khuyến khích một bộ thử nghiệm được định dạng tốt.
Bạn có thể tăng giới hạn độ dài dòng.
Nhóm của chúng tôi thích có giới hạn vì nó giúp giữ cho mã có thể đọc được trên các màn hình hẹp, vì vậy đây không phải là lựa chọn tốt nhất .
Bạn có thể xóa
testtừ đầu các phương pháp của mình.Đây không phải là một lựa chọn. Người chạy thử nghiệm của Python cần tất cả các phương pháp thử nghiệm để bắt đầu
testhoặc nó sẽ không chọn chúng.Chỉnh sửa: Một số trình chạy thử nghiệm cho phép bạn chỉ định một biểu thức chính quy khi tìm kiếm các hàm thử nghiệm, mặc dù tôi không muốn làm điều này vì nó là thiết lập bổ sung cho mọi người làm việc trong dự án.
Bạn có thể tách EventListener thành lớp riêng và kiểm tra riêng.
Trình xử lý sự kiện nằm trong lớp riêng của nó (và được thử nghiệm). Nó chỉ là một giao diện được kích hoạt bởi các sự kiện xảy ra trong ClientConnection. Loại gợi ý này dường như có mục đích tốt, nhưng bị định hướng sai và không giúp trả lời câu hỏi ban đầu.
Bạn có thể sử dụng Khung BDD như Behave . Nó được thiết kế cho các bài kiểm tra biểu cảm.
Điều này là đúng, và tôi hy vọng sẽ sử dụng chúng nhiều hơn trong tương lai. Mặc dù tôi vẫn muốn biết cách tách các tên hàm thành các dòng.
Cuối cùng...
Có cách nào trong Python để chia một khai báo hàm dài thành nhiều dòng không?
Ví dụ...
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()
Hay tôi sẽ phải tự cắn viên đạn và rút ngắn nó?
func.__doc__