私たちの開発チームは、最大80文字の行長を必要とするPEP8リンターを使用しています。
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)内でテストを実行すると、テスト名が表示されなくなります。
おそらく、円記号(論理行継続文字)を使用して行を継続できます。
残念ながら、Danの回答で述べられているように、これはPythonのオプションではありません。
テストのリンティングをやめることができます。
これはいくつかの点で理にかなっていますが、適切にフォーマットされたテストスイートを推奨するのは良いことです。
行の長さの制限を増やすことができます。
私たちのチームは、狭いディスプレイでコードを読みやすくするのに役立つため、制限があるのが好きです。したがって、これは最良のオプションではありません。
testメソッドの最初から削除することができます。これはオプションではありません。Pythonのテストランナーは、最初にすべてのテストメソッドを必要
testとします。そうしないと、それらを取得しません。編集:一部のテストランナーでは、テスト関数を検索するときに正規表現を指定できますが、プロジェクトで作業するすべての人にとって余分な設定であるため、これは行いません。
EventListenerを独自のクラスに分離し、個別にテストすることができます。
イベントリスナーは独自のクラスにあります(そしてテストされます)。これは、ClientConnection内で発生するイベントによってトリガーされる単なるインターフェースです。この種の提案は善意があるように見えますが、誤った方向に向けられており、元の質問に答えるのに役立ちません。
BehaveのようなBDDフレームワークを使用できます。表現力豊かなテスト用に設計されています。
これは事実であり、将来的にはもっと多く使用したいと思っています。関数名を行間で分割する方法を知りたいのですが。
最終的に...
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__