クラスまたは関数の宣言の直後にあるPythonドキュメントストリングは、__doc__
属性に配置されます。Pythonコードから "余分な"ドキュメンテーションを抽出していますか?
質問:どのようには機能して後に発生し、追加の「内部」ドキュメンテーション文字列を抽出していますか?
アップデート:このようなリテラル文は、コンパイラによって省略されています。おそらく私はASTを経由して(そしてその行番号に)行くことができますか?
なぜ私は尋ねますか?
私は/考えると描写するために、このような「内部」ドキュメンテーション文字列を使用する(完全に焼かれていない)という考えを持っていた場合にはアジャイルシナリオの/後のセクション:ドキュメンテーション文字列を抽出し、テスト - によって
def test_adding():
"""Scenario: Adding two numbers"""
adder = Adder()
"""When I add 2 and 3"""
result = adder.add(2, 3)
"""Then the result is 5"""
assert result == 5
私は、これはSEPARを定義する必要がBehave、Freshen、Lettuce、PyCukes、中に撮影したアプローチよりも簡潔になると思います
Scenario: Adding two numbers
When I add 2 and 3 (PASS)
Then the result is 5 (FAIL)
AssertionError Traceback
...
:フレームワークを実行すると、このような出力を生成することがありました各ステップごとに関数を使用しました。私は、ステップのテキストを関数名(@When("I add numbers") def add_numbers()
)として繰り返す必要はありません。しかし、単体テストのテストとは異なり、ドキュメントストリングは、ビジネス読取り可能なシナリオを印刷して参照する機能を追加します。コンパイラはリテラル文をelides以来
'inspect.getsource(module)'を使ってソースを取得することができます。 'ast 'を使う必要はありません。 – jfs
ありがとうございました! – zeekay
'ast'ルートはテストのための新しい構文を導入しているので、私はあなたが' ast'ルートに行くべきかどうかは分かりません。誰かが文字列を置くのを忘れたら? 'with'ステートメントを使ってコンテキストを指定し、それらを使って全体的なテストを構築することができます。 –