2016-09-21 14 views
0

私は周囲のフレームワークを理解しようとしているクラス割り当てがあります。Pythonクラス内のテストケース

私はStringCalculatorクラスモジュールを作成し、テストファイルを作成しました。

私のクラスモジュールに対して実行するために作成されたテストファイル内に、私は多数の「メソッド」を持っています。一般に、それらの「メソッド」はテストケースとしてカウントされるのでしょうか、私はdoctestのようにするべきですか?

私はプログラミングに慣れていないので、許してください。これを取り囲むフレームワークとテストケースを理解するのは苦労しています。だから、この投稿には何も載せないでください。私はあなたが私の道を捨てるどんな質問にも答えたいと思っています。再び、私は初心者です。私がコードで概説しているものがテストケースとみなされるかどうかを知る必要があります。

次のコードは、私は私のテストファイルのために持っているものです。

import unittest 
from StringCalculatorClass2 import StringCalculator 

class TestStringCalculatorClass(unittest.TestCase): 

    def test_add_empty_string(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("") 
     assert 0 == result 

    def test_add_one(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("1") 
     assert 1 == result 

    def test_add_two(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("2") 
     assert 2 == result 

    def test_add_one_and_two(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("1,2") 
     assert 3 == result 

    def test_add_five_numbers(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("1,2,17,4,1,1") 
     assert 26 == result 

    def test_add_with_new_line(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("1,2\n17") 
     assert 20 == result 

    def test_is_new_delimiter_set(self): 
     string_calculator = StringCalculator() 
     result1 = string_calculator._is_new_delimiter_set("//;\n1;2;17\n5") 
     result2 = string_calculator._is_new_delimiter_set("1;2;17\n5") 
     assert True == result1 
     assert False == result2 

    def test_get_new_delimiter(self): 
     string_calculator = StringCalculator() 
     result = string_calculator._get_new_delimiter("//;\n1;2;17\n5") 
     assert ';' == result 

    def test_get_string_without_delimiter(self): 
     string_calculator = StringCalculator() 
     result = string_calculator._get_string_without_delimiter("//;\n1,2") 
     assert "1,2" == result 

    def test_call_add_with_new_delimiter(self): 
     string_calculator = StringCalculator() 
     result = string_calculator.add("//;\n1;2;17\n5") 
     assert 25 == result 

    def test_create_error_message_for_negative_numbers(self): 
     string_calculator = StringCalculator() 
     negative_numbers = [-1, -2, -3] 
     result = string_calculator._create_error_message(negative_numbers) 
     assert 'negatives not allowed: -1, -2, -3' == result 

    def test_negative_numbers_raises_exception(self): 
     string_calculator = StringCalculator() 
     exception_raised = False 
     try: 
      result = string_calculator.add("-1") 
     except Exception: 
      exception_raised = True 
     assert True == exception_raised 

    def test_negative_number_raises_exception_with_message(self): 
     string_calculator = StringCalculator() 
     exception_raised = False 
     exception_message = "" 
     try: 
      result = string_calculator.add("-1") 
     except Exception as err: 
      exception_message = err 
      exception_raised = True 
     assert True == exception_raised 
     assert 'negatives not allowed: -1' == exception_message.args[0] 

    def test_multiple_negative_numbers(self): 
     string_calculator = StringCalculator() 
     exception_raised = False 
     exception_message = "" 
     try: 
      result = string_calculator.add("2,-1,4,-2") 
     except Exception as err: 
      exception_message = err 
      exception_raised = True 
     assert True == exception_raised 
     assert 'negatives not allowed: -1, -2' == exception_message.args[0] 

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

これを追加するには、私はPyCharmでこれを取得する: ファイル「C:\プログラムファイル(x86のテストは22:50 ... トレースバック(最後の最新の呼び出し)で開始しました)\ JetBrains \ PyCharmコミュニティエディション2016.2.2 \ helpers \ pycharm \ utrunner.py "行172、 module = loadSource(a [0]) ファイル「C:\ Program Files(x86)\ JetBrains \ PyCharmコミュニティエディション2016.2.2 \ helpers \ pycharm \ utrunner.py」65行目のloadSource モジュール= imp.load_source(moduleNameのファイル名) 例外IOError:[エラー番号2]このようなファイルまたはディレクトリ プロセス終了コードで仕上げ1 –

答えて

0

はい方法はテストケースとしてカウントされます。正しい方法は、unittest.TestCaseクラスのアサート関数をデフォルトのPython assertの代わりに使用することです。だから、例えば、あなたがこのコードを持っていなければならない最初のテストのために:

def test_add_empty_string(self): 
    string_calculator = StringCalculator() 
    result = string_calculator.add("") 
    self.assertEqual(result, 0) 

assertTrueassertFalseようunittest.TestCaseクラスでアサーションのすべての種類、...

はあなたがここでユニットテストについての詳細を読むことができますがあります:私はテストファイルを実行するとhttps://docs.python.org/2/library/unittest.html

+0

を確認していただきありがとうございます!!!! –

+0

@JoeDeneca問題ありません。それが助けられたら、答えを受け入れてください。 – afsafzal

関連する問題