どう単位で試験させる様をドキュメント?[定休日]
-
19-09-2019 - |
質問
ようにしている改善のための試験は私のPythonます。のに困っている試験回数の増加ですからそれぞれの試験はどのよう本イベントは終了いたしました。めスポットです。知っている部分の身体の安全を確保するための試験は単体テストの名前(あるいたるまで拘り抜いた仕上がり 他のもっとも興味の解明書およびユニットの試験となります。
どのようにユニット試験させる様をドキュメントを明である場合試験に失敗しょうか。具体的には、良いユニット試験docstring?
いい感謝の両方の記述解答例のユニットテストに優れます。がん作用のPythonは僕に開放実践からその他の言語を学んでいます。
解決
私は、専用のメソッド名で私のユニットテストのほとんどを文書化します:
testInitializeSetsUpChessBoardCorrectly()
testSuccessfulPromotionAddsCorrectPiece()
は、私のテストケースのほぼ100%の場合、これは明らかにユニットテストが検証を行っているかを説明し、それは私が使用するすべてのです。しかし、より複雑なテストケースの数に、私はいくつかの行が何をしているかを説明するための方法を通して、いくつかのコメントを追加します。
私は、プロジェクト内のすべてのテストケースの名前を解析することにより、ドキュメントファイルを生成する前に、ツール(私はそれがRubyのためだったと考えている)を見てきましたが、私は名前を覚えていません。あなたはチェスの女王クラスのテストケースを持っていた場合:
testCanMoveStraightUpWhenNotBlocked()
testCanMoveStraightLeftWhenNotBlocked()
ツールは、このような内容のものでHTMLドキュメントを生成します
Queen requirements:
- can move straight up when not blocked.
- can move straight left when not blocked.
他のヒント
おそらく問題などに試験docstringがどのように書くの試験ですか?リファクタリング試験のうちに自己記録で、おdocstring行くことはありません焼きコードに変わります。
いんでいることができるかの試験をより明確:
- 明確&述試験方法名(既に記載されているもの
- 試験体は明確かつ簡潔な自己記録)
- 抽象的か複雑なsetup/teardown。方法
- ます。
例えば、試験のようになります:
def test_widget_run_returns_0():
widget = Widget(param1, param2, "another param")
widget.set_option(true)
widget.set_temp_dir("/tmp/widget_tmp")
widget.destination_ip = "10.10.10.99"
return_value = widget.run()
assert return_value == 0
assert widget.response == "My expected response"
assert widget.errors == None
が置き換えの設定は、発言と発言間の関係を明確にされる関数)を呼び出:
def test_widget_run_returns_0():
widget = create_basic_widget()
return_value = widget.run()
assert return_value == 0
assert_basic_widget(widget)
def create_basic_widget():
widget = Widget(param1, param2, "another param")
widget.set_option(true)
widget.set_temp_dir("/tmp/widget_tmp")
widget.destination_ip = "10.10.10.99"
return widget
def assert_basic_widget():
assert widget.response == "My expected response"
assert widget.errors == None
いことがあるので注意して試験方法はこちらのシリーズのメソッドの呼び出しとの意思った夢の氏名、うDSL的な試験までを実施。は試験のようにも書類が必要な?
もうひとつ注意することがご試験方法は主につのレベル可能です。誰かに読書の試験方法のアルゴリズムは:
- 作成ウィジェット
- 呼び出しのウィジェット
- 主張のコードか期待していま
自分の理解度試験方法はないmuddiedの詳細設定、ウィジェットは、抽象度以下の試験方法である。
最初の試験方法に インラインの設定 パターンです。第二版。 作成方法 や 委託設定 パターン
一般的に私に対しコメントする場合を除き、何度も詳しく説明してくれ"なぜ"のコードです。読みのおじさんのボブ-マーティン クリーンコード と確信した。あ章コメントである。オススメです。
詳自動化テストベストプラクティスをチェックしてほしい ルパターン.
テストメソッドの名前は、あなたがテストしている正確に何を記述する必要があります。ドキュメントには、テストが失敗するものを言う必要があります。
のものを使用できる組み合わせの記述方法の名称とコメントのdocフレーバ文字列になります。良きについて教えてくださいはじめの基本的な手順および検証のdocフレーバ文字列になります。その後行った場合、これらの試験のあるジャーナルとその他のテスティングフレームワークを自動走行の試験を集め、新しい機能とチャートタイプの枠組みのログの内容をドキュメントの文字列それぞれの試験方法に沿って標準出力に出力+stderr.
基本的な例を示します:
class SimpelTestCase(unittest.TestCase):
def testSomething(self):
""" Procedure:
1. Print something
2. Print something else
---------
Verification:
3. Verify no errors occurred
"""
print "something"
print "something else"
の手順に試験が容易になりえこの試験はしています。と場のニーズに合わせてさまざまなのdocstringの試験出力で把握を行なっていきた通りの結果を後に以前に比べて簡単になりました。前の場所に勤めていたんですが、ちょうどうのこうした全ての故障が発生しました。また単体テスト(ユニットテスト毎にチェックイン時、まだ部屋の準備、自動的に使用CruiseControl.
テストが失敗した場合には(それは今までに通過する前であるべきである)を使用すると、エラーメッセージが表示され、アップ何伝えることができるはずです。あなたがそのように計画している場合のみ起こります。
これは完全にテストクラスの命名、試験方法、およびアサートメッセージの問題です。テストが失敗した、とあなたはこれら三つの手がかりから、最大であるものを言うことができない場合は、その後、いくつかのことを名前を変更したり、いくつかのテストクラスを破ります。
治具の名前はClassXTestsで、テストの名前がTestMethodXで、エラーメッセージが「falseが返され、真の期待」された場合には発生しません。それはずさんな試し書きの兆候だ。
ほとんどの時間あなたは何が起こったかを知るために、テストまたは任意のコメントを読んでする必要はありません。