2016-04-18 5 views
4

クラス内で提供されているユニットテストから1つのテストだけを実行しようとしています。だから仮定するpythonで特定のユニットテストをmain()から実行します

class MytestSuite(unittest.TestCase): 
    def test_false(self): 
     a = False 
     self.assertFalse(a, "Its false") 

    def test_true(self): 
     a = True 
     self.assertTrue(a, "Its true") 

私はtest_falseを実行したいと思います。 Q & Aは、このサイトで提供し、オンライン、私は私のメインクラスで

if __name__ == "__main__": #Indentation was wronng 
    singletest = unittest.TestSuite() 
    singletest.addTest(MytestSuite().test_false) 
    unittest.TextTestRunner().run(singletest) 

を次のコード行を使用に基づいて、私は、テストを追加しようとしたときにエラーを得続けます。主に:

File "C:\Python27\Lib\unittest\case.py", line 189, in __init__ 
(self.__class__, methodName)) 
ValueError: no such test method in <class '__main__.MytestSuite'>: runTest 

私のクラスには特定のrunTestメソッドが必要ですか?異なるスイートに属する特定のテストを実行する方法はありますか?例えば:方法スイートクラス2に属するスイートクラス1方法Bに属する。意外にも、これはオンラインで見つけるのが難しいことであることが判明しています。コマンドラインで実行する例は複数ありますが、プログラム自体ではありません。いつものように、どんな助けもありがとう。

+0

私はちょうどインデントを編集しようとしていましたが、それは私を打ちました。 'class MytestSuite'のインデントをチェックしましたか?関数がインデントされていない限り、空のクラスのように見えます。 – noumenal

+0

インデントして申し訳ありません。私は自分のプログラムで正しくインデントしています。私はちょうど私がかなりの間、サイトを使用しているにもかかわらずStackOverflowでそれを働かせることができませんでした:) – Fizi

+0

4スペースはそれを行います:-) – noumenal

答えて

4

あなたはちょうど間違ったことをaddTestに渡しています。バインドされたメソッドを渡すのではなく、実行する単一のテストのという名前ので構築されたTestCaseの新しいインスタンス(ケースではMyTestSuiteのインスタンス)を渡す必要があります。


The Docs

singletest.addTest(MyTestSuite('test_false')) 

は、この上の追加情報と例の多くを持っています。

+0

Ahhありがとうございます。なぜ私はドキュメントを読んでより徹底しなければならない別の理由。 – Fizi

関連する問題