Notre équipe de développement utilise un PEP8 linter qui nécessite un maximum de longueur de ligne de 80 caractères.
Quand je suis en train d'écrire des tests unitaires en python, j'aime avoir descriptives des noms de méthode pour décrire ce que chaque test. Toutefois cela conduit souvent à me dépasser la limite de caractères.
Voici un exemple d'une fonction qui est trop long...
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()
Mes Options:
-
Vous pouvez simplement écrire moins les noms de méthode!
Je sais, mais je ne veux pas perdre le caractère descriptif des noms de tests.
-
Vous pouvez écrire les commentaires multi-lignes au-dessus de chaque test au lieu d'utiliser des noms longs!
C'est un bon idée, mais alors je ne vais pas être en mesure de voir le test de noms lors de l'exécution de tests à l'intérieur de mon IDE (PyCharm).
-
Peut-être vous pouvez continuer les lignes avec une barre oblique inverse (une logique caractère de continuation de ligne).
Malheureusement, ce n'est pas une option en Python, comme mentionné dans Dan réponse.
-
Vous pourriez arrêter peluchage vos tests.
Cela a un sens, à certains égards, mais c'est sympa d'encourager un bien formaté suite de tests.
-
Vous pouvez augmenter la longueur de la ligne de limite.
Notre équipe aime avoir de la limite, car il permet de conserver un code lisible sur d'étroites affiche, donc ce n'est pas la meilleure option.
-
Vous pouvez supprimer
test
depuis le début de vos méthodes.Ce n'est pas une option. Python test coureur a besoin de toutes les méthodes d'essai pour commencer avec
test
ou de ne pas les ramasser.Edit: Certains les coureurs de l'épreuve vous permettent de spécifier une expression régulière lors de la recherche pour les fonctions de test, bien que je préfère ne pas le faire parce que c'est extra d'installation pour tous ceux qui travaillent sur le projet. Aussi, il n'a pas vraiment répondre à la question d'origine.
-
Vous pourriez séparer l'EventListener dans sa propre classe et de le tester séparément.
L'Écouteur d'Événement est dans sa propre classe (et testée). C'est juste une interface qui est déclenchée par des événements qui se passe à l'intérieur de ClientConnection. Ce genre de suggestion semble avoir de bonnes intentions, mais d'une erreur d'acheminement et de ne pas permettre de répondre à la question d'origine.
-
Vous pouvez utiliser une BDD Cadre comme se Comporter. Il est conçu pour expressifs tests.
C'est vrai, et j'espère que d'utiliser plusieurs d'entre eux dans l'avenir. Bien que j'ai tout de même envie de savoir comment diviser les noms de fonction à travers les lignes.
En fin de compte...
Est-il possible en Python pour diviser une longue déclaration de fonction sur plusieurs lignes?
Par exemple...
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()
Ou vais-je mordre la balle et de raccourcir moi-même?