2013-12-16 11 views
5

わかりやすく私たちのWebアプリケーションのテストを行っていますが、unittest.TestCaseを継承したBaseTestClassを作成しました。 BaseTestClassには私の<Page>Testクラスのそれぞれが継承する私のsetUp()tearDown()メソッドが含まれています。Python unittest、ベーステストクラスを使用するときのテストをスキップ

いくつかの違いがある類似のページを持つ異なるデバイスのため、私は@unittest.skipIf()デコレータを使用したかったが、その証明は困難でした。 BaseTestClassからデコレータを継承するのではなく、そのデコレータを使用しようとすると、unittest.TestCase<Page>Testに自動インポートしようとしています。

Baseを使用するときにskipデコレータを使用する方法はありますか?独立したモジュールでのテストクラスの

class BaseTestClass(unittest.TestCase): 

    def setUp(): 
     #do setup stuff 
     device = "Type that blocks" 

    def tearDown(): 
     #clean up 

ワン:

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     #do test 

    def test_two(self): 
     #do test 

    @unittest.skipIf(condition, reason) <<<What I want to include 
    def test_three(self): 
     #do test IF not of the device type that blocks 

答えて

2

は明らかにこれはunittest2必要です(やPython 3、私は仮定)が、それ以外の、あなたの例はかなり近かったです。あなたの実際のテストコードの名前があなたのユニットテストディスカバリーメカニズム(鼻の場合test_*.py)によって発見されていることを確認してください。

#base.py 
import sys 
import unittest2 as unittest 

class BaseTestClass(unittest.TestCase): 

    def setUp(self): 
     device = "Type that blocks" 
    def tearDown(self): 
     pass 

そして、実際のコードで:

# test_configpage.py 
from base import * 

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     pass 

    def test_two(self): 
     pass 

    @unittest.skipIf(True, 'msg') 
    def test_three(self): 
     pass 

出力に

.S. 
---------------------------------------------------------------------- 
Ran 3 tests in 0.016s 

OK (SKIP=1) 
+0

感謝を与え、私はワイルドカードのインポートを使用することを考えたことはありませんでした。 –

関連する問題