0

2 つの整数が等しいかどうかをテストする単体テストを実行すると、失敗を報告する単体テストではなくアサーション エラー例外が発生し、次のテストに進みます。これがテストコードです(要点を証明するために大幅に簡略化されています)。

import unittest

class TestClass(unittest.TestCase):

    def test_method(self):
        myVariable = 1
        self.assertTrue(myVariable==0)

if __name__ == '__main__':
    unittest.main()

トレースバックは次のとおりです。

builtins.AssertionError: False is not true
File "C:\Dev\Volleyball\test.py", line 10, in <module>
  unittest.main()
File "C:\Program Files\python32\Lib\unittest\main.py", line 124, in __init__
  self.runTests()
File "C:\Program Files\python32\Lib\unittest\main.py", line 270, in runTests
  self.result = testRunner.run(self.test)
File "C:\Program Files\python32\Lib\unittest\runner.py", line 168, in run
  test(result)
File "C:\Program Files\python32\Lib\unittest\suite.py", line 67, in __call__
  return self.run(*args, **kwds)
File "C:\Program Files\python32\Lib\unittest\suite.py", line 105, in run
  test(result)
File "C:\Program Files\python32\Lib\unittest\suite.py", line 67, in __call__
  return self.run(*args, **kwds)
File "C:\Program Files\python32\Lib\unittest\suite.py", line 105, in run
  test(result)
File "C:\Program Files\python32\Lib\unittest\case.py", line 498, in __call__
  return self.run(*args, **kwds)
File "C:\Program Files\python32\Lib\unittest\case.py", line 446, in run
  self._executeTestPart(testMethod, outcome, isTest=True)
File "C:\Program Files\python32\Lib\unittest\case.py", line 391, in _executeTestPart
  function()
File "C:\Dev\Volleyball\test.py", line 7, in test_method
  self.assertTrue(myVariable==0)
File "C:\Program Files\python32\Lib\unittest\case.py", line 527, in assertTrue
  raise self.failureException(msg)

何か間違ったことをしていますか、それともテスト アサーションのしくみを誤解していますか?

記録のために、私は Windows 7 で Python 3.2.1 を使用しています。

ティア、アラン

4

2 に答える 2

0

そうです-@agfのおかげで、許容できる妥協点に達しました。「Debugger:Exceptions」の「Always Report」セクションから AssertionError を削除したところ、デバッガーがアサーションで停止しなくなりました。欠点は、テスト スクリプトの実行中はこれで問題ありませんが (エラー リストに結果が表示されるため)、「実際の」プログラムを実行するときは、「デバッグ I/O」出力を監視する必要があることです。アサーションを表示します。

返信してくれたすべての人に感謝します。

アラン

于 2011-08-19T17:20:35.403 に答える
0

self.assertTrue(myVariable==0) の代わりに self.assertEqual(myVariable, 0) を使用してみてください

于 2011-08-30T18:19:38.933 に答える