Наша команда розробників використовує ліній PEP8, який вимагає максимальної довжини рядка 80 символів .
Коли я пишу модульні тести на python, мені подобається мати описові імена методів, щоб описати, що робить кожен тест. Однак це часто призводить до того, що я перевищую ліміт символів.
Ось приклад занадто довгої функції ...
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).
Можливо, ви можете продовжити рядки зворотною рискою рискою (логічний символ продовження рядка).
На жаль, це не варіант у Python, як зазначено у відповіді Дана.
Ви можете припинити зв’язування тестів.
Це певним чином має сенс, але приємно заохочувати добре відформатований набір тестів.
Ви можете збільшити обмеження довжини рядка.
Нашій команді подобається мати обмеження, оскільки це допомагає тримати код читабельним на вузьких дисплеях, тому це не найкращий варіант.
Ви можете видалити
testз початку ваші методи.Це не варіант. Для запуску тесту Python для початку потрібні всі методи тестування,
testінакше він їх не підбере.Редагувати: Деякі тестові програми дозволяють вам вказати регулярний вираз під час пошуку тестових функцій, хоча я волів би не робити цього, оскільки це додаткове налаштування для всіх, хто працює над проектом.
Ви можете розділити EventListener на власний клас і протестувати його окремо.
Слухач подій є у своєму власному класі (і тестується). Це просто інтерфейс, який запускається подіями, що відбуваються в ClientConnection. Цей тип пропозицій, схоже, має добрий намір, але неправильно спрямований і не допомагає відповісти на вихідне питання.
Ви можете використовувати BDD Framework, як Behave . Він призначений для виразних тестів.
Це правда, і я сподіваюся використовувати їх у майбутньому. Хоча я все-таки хотів би знати, як розділити імена функцій на рядки.
Зрештою ...
Чи є в Python спосіб розділити довгу декларацію функції на кілька рядків ?
Наприклад...
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__