4

テストのアサーションがパスしたときに do_something() を実行する方法が見つかりません。例えば:

    def test_one(self):
        self.assertEqual(1,1, "Did not match")

アサーションが失敗した場合、そのテストは「一致しませんでした」と出力しますが、この場合は失敗しないため、関数を呼び出すか、self.assertEqual() が成功したときに何かを出力しようとしています。

ありがとう

4

2 に答える 2

4

何かが通過したときに印刷したい場合は、いくつかのオプションがあります。ただし、 Noeld の回答は使用しないでください。それが間違っているわけではありません。これを行うためのより良い方法が提供されているprintときに、テストを大量のメッセージで混乱させたくないというだけです。unittest

冗長性

すべての単一関数の結果を出力したい場合test_は、テスト ランナーの冗長性を設定します。これは、いくつかの方法で行うことができます。

  1. コマンド ラインから、verboseオプションを使用します。

    python -m unittest discover -v

  2. プログラムで を呼び出して冗長引数unittest.mainを渡す

    if __name__ == "__main__":
        unittest.main(verbosity=2)
    

テストを「手動で」実行する

  1. プログラムで TestSuite を構築し、verbosity 引数を指定して TestRunner を呼び出します。

    suite = unittest.TestLoader().loadTestsFromModule(TestModuleName)
    results = unittest.TextTestRunner(verbosity=2).run(suite)
    
  2. テストが成功するたびに呼び出されるaddSuccessメソッドを含むTestResult オブジェクトのサブクラスを作成します。

    その後、この TestResult オブジェクトをテスト スイートの run メソッドに渡すことができます。

        suite = unittest.TestLoader().loadTestsFromModule(TestModuleName)
        suite.run(myTestResult)
    

サードパーティのランナー

Twisted's Trialをご覧ください。役に立つかもしれない多くの異なるテストランナーが含まれています。デフォルトでは、TreeReporter次のように実行されます。

治験報告

于 2013-05-22T03:00:45.607 に答える