web-dev-qa-db-ja.com

Python unittest-0.000秒でRan 0テスト

だから私はこのコードをやりたい Kata 練習のために。私は別のファイルにtddでカタを実装したい:

アルゴリズム:

# stringcalculator.py  
def Add(string):
   return 1

およびテスト:

# stringcalculator.spec.py 
from stringcalculator import Add
import unittest

class TestStringCalculator(unittest.TestCase):
    def add_returns_zero_for_emptyString(self):
        self.assertEqual(Add(' '), 0)

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

テストファイルを実行すると、次の結果が得られます。

Ran 0 tests in 0.000s

OK

ただし、失敗したテストを1つ返す必要があります。ここで何が恋しいですか?

22
MattSom

python unittest doc

最も単純なTestCaseサブクラスは、テストメソッド(名前がtestで始まるメソッド)を実装するだけです

そのため、メソッド名を次のように変更する必要があります。

def test_add_returns_zero_for_emptyString(self):
    self.assertEqual(Add(' '), 0)
27
abccd

補足:また、すべてのテストが存在するファイルの名前は「test_」で始まる必要があります

15
Shashank

同様の問題がありました。私の根本原因は、testクラス内にunittest.mainの実行ブロックを配置したことです。これにより、RAN 0テストのメッセージングが継続されました。クラスの外に移動しました。

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

同じ症状ですが、問題は異なります。インデントのためにタブとスペースを混同していないことを確認してください。この問題は、オンラインリソースからコードをコピーし、必要に応じて更新するときに発生する可能性があります。タブとスペースはほとんどのエディターで非常によく似ているため、テスト関数が正しく定義されていない可能性があります。

1
mikryz