2017-03-26 5 views
1

Pythonの初心者ですが、pytestまたはunittestのいずれかを使用して記述したコードをPythonでテストすることによって、コーディングを学びたいと思います。その点で、私は、入力として複数のアレイに関するアサーションをテストする方法を思ったんだけど:複数の整数配列のテストを書くには?

私は整数を返すことを目的と機能extractDifferentNumberは、整数のシーケンスの残りの部分に属していませんがあります。

def extractDifferentNumber(df): 
    df_set = set(df) 
    for each in df_set: 
     if df.count(each) == 1: 
      return each 

# print(extractDifferentNumber([10,11,10,10,10,10,10])) 11 
# print(extractDifferentNumber([20,11,20,20,20])) 11 
# print(extractDifferentNumber([1,1,1,1,2])) 2 

今、私は私の機能が期待される結果を返すことを確認するためにunittestを使用したい:数字の列のうち異なる数がいることを抽出し

その点で

class SingleDifferentNumberTestCase(unittest.TestCase): 
    """Test for `myfunction.py`""" 

    def setUp(self): 
     self.input = [10,11,10,10,10,10,10] 
     self.expected = [11] 

    def test_is_different(self): 
     """Is a number different then the others""" 
     self.assertTrue(extractDifferentNumber()) 


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

、私は2つの質問がある:

にはどうすればいいself.inputself.expectedなど複数のアレイ/テストケースを含むことができ、どのように私はunittestの使用して、インスタンスのためのself.assertTrueのような適切なアサーションを上げることができますか?

+0

方法[1,2,3]はどうですか? – Copperfield

+0

@Copperfield:どうか、単体テストの書き方についての質問です。特定のアルゴリズムでコーナーケースを処理する方法に関するものではありません。マンバは確かに私たちにMVCEを提供しました。 – 2ps

+0

@ 2psよく、あなたはすでにその部分を扱っています。コーナーケースも考慮してみてください。より良いアルゴリズムを手助けするものです。 – Copperfield

答えて

2

だけadd multiple methods各文字testで始まるいる:テストケースがunittest.TestCaseをサブクラス化することによって作成される

。 3つの 個別テストは、 文字のtestで始まる名前のメソッドで定義されています。この命名規則は、試験ランナーに対して、どのメソッドがテストを表すかについて、 について通知します。

各テストの要点は、 予想結果を確認するためにassertEqual()を呼び出すことです。条件を確認するにはassertTrue()またはassertFalse()を入力します。 またはassertRaises()を使用して、特定の例外が発生したことを確認します。 assertステートメントの代わりにこれらのメソッドが使用されるため、テスト ランナーはすべてのテスト結果を蓄積してレポートを生成できます。


class SingleDifferentNumberTestCase(unittest.TestCase): 
    """Test for `myfunction.py`""" 

    def test_array_1(self): 
     """Is a number different then the others""" 
     self.assertEqual(extractDifferentNumber([10,11,10,10,10,10,10]), 11) 

    def test_array_2(self): 
     self.assertEqual(extractDifferentNumber([20,11,20,20,20]), 11) 

    def test_array_3(self): 
     self.assertEqual(extractDifferentNumber([1,1,1,1,2]), 2)   
+0

時間をとっていただきありがとうございます! –

関連する問題