Unittest-framework-skip-test
UnitTest Framework-テストをスキップ
Python 2.7以降、テストのスキップのサポートが追加されました。 個々のテストメソッドまたはTestCaseクラスを、条件付きでも無条件でもスキップできます。 このフレームワークにより、特定のテストを「予想される失敗」としてマークできます。 このテストは「失敗」しますが、TestResultでは失敗としてカウントされません。
メソッドを無条件にスキップするには、次のunittest.skip()クラスメソッドを使用できます-
import unittest
def add(x,y):
return x+y
class SimpleTest(unittest.TestCase):
@unittest.skip("demonstrating skipping")
def testadd1(self):
self.assertEquals(add(4,5),9)
if __name__ == '__main__':
unittest.main()
skip()はクラスメソッドであるため、@トークンがプレフィックスとして付けられます。 このメソッドは、引数を1つ取ります。スキップの理由を説明するログメッセージです。
上記のスクリプトが実行されると、次の結果がコンソールに表示されます-
C:\Python27>python skiptest.py
s
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK (skipped = 1)
文字「s」は、テストがスキップされたことを示します。
テストをスキップするための代替構文は、テスト関数内でインスタンスメソッドskipTest()を使用することです。
def testadd2(self):
self.skipTest("another method for skipping")
self.assertTrue(add(4 + 5) == 10)
次のデコレータは、テストのスキップと予期される失敗を実装します-
S.No. | Method & Description |
---|---|
1 |
unittest.skip(reason) 装飾されたテストを無条件にスキップします。 _reason_は、テストがスキップされる理由を説明する必要があります。 |
2 |
unittest.skipIf(condition, reason) 条件が真の場合、装飾されたテストをスキップします。 |
3 |
unittest.skipUnless(condition, reason) 条件が真でない限り、装飾されたテストをスキップします。 |
4 |
unittest.expectedFailure() テストを予想される失敗としてマークします。 実行時にテストが失敗した場合、テストは失敗としてカウントされません。 |
次の例は、条件付きスキップと予期される失敗の使用を示しています。
import unittest
class suiteTest(unittest.TestCase):
a = 50
b = 40
def testadd(self):
"""Add"""
result = self.a+self.b
self.assertEqual(result,100)
@unittest.skipIf(a>b, "Skip over this routine")
def testsub(self):
"""sub"""
result = self.a-self.b
self.assertTrue(result == -10)
@unittest.skipUnless(b == 0, "Skip over this routine")
def testdiv(self):
"""div"""
result = self.a/self.b
self.assertTrue(result == 1)
@unittest.expectedFailure
def testmul(self):
"""mul"""
result = self.a*self.b
self.assertEqual(result == 0)
if __name__ == '__main__':
unittest.main()
上記の例では、testsub()とtestdiv()はスキップされます。 最初のケースではa> bが真ですが、2番目のケースではb == 0は真ではありません。 一方、testmul()は予想される失敗としてマークされています。
上記のスクリプトを実行すると、2つのスキップされたテストは「s」を示し、予想される失敗は「x」として表示されます。
C:\Python27>python skiptest.py
Fsxs
================================================================
FAIL: testadd (__main__.suiteTest)
Add
----------------------------------------------------------------------
Traceback (most recent call last):
File "skiptest.py", line 9, in testadd
self.assertEqual(result,100)
AssertionError: 90 != 100
----------------------------------------------------------------------
Ran 4 tests in 0.000s
FAILED (failures = 1, skipped = 2, expected failures = 1)