2017-01-26 6 views
2

私は失敗したテストをしていますが、失敗すると予想していますが、私はpytestがパスだと言って欲しいです。どうやってやるの?私は失敗したテストをOKにします。

例えば、私は最小値を持っている= 30、最大= 40

は、ここで私がやっているものです:私は受け付けており

@pytest.mark.parametrize(
     "minimum, maximum, expected_min, expected_max", [ 
      (13, 15, 34, 45), 
      (30, 40, 30, 40), 
      ("sd", 3, 34, 45), 
     ]) 

を:

  • は(失敗しましたアサーションエラー)
  • 合格
  • 失敗(アサーションエラー)

すべてのテストに合格したというレポートを表示するにはどうすればよいですか?

+0

[期待される例外に関するアサーション](http://pytest.org/2.2.4/assert.html#assertions-about-expected-exceptions) – Tagc

+0

@Tagc :これの問題は、私は逆の結果を持っていることです。渡された、失敗した、渡された。 – George

+1

ええ、入力を2つのグループ(「有効」と「無効」のケース)に分割し、それぞれのグループを別々にテストすることが必要です。 – Tagc

答えて

3

実際の例を使用してfrollo's answerを実際の例に基づいて構築するには、以下のコードを考慮してください。 分割テストデータの元のセットは、2つのグループに分かれています。つまり、合格すると予想されるグループと失敗するグループです。このような単体テストは、ある種の状況を孤立してテストし、各テストケースを記述しやすくし、理解しやすくする必要があります。

import pytest 


class TestMinMax: 
    @pytest.mark.parametrize(
     "minimum, maximum, expected_min, expected_max", [ 
      (30, 40, 30, 40), 
     ]) 
    def test_valid_examples(self, minimum, maximum, expected_min, expected_max): 
     assert minimum == expected_min 
     assert maximum == expected_max 

    @pytest.mark.parametrize(
     "minimum, maximum, expected_min, expected_max", [ 
      (13, 15, 34, 45), 
      ("sd", 3, 34, 45), 
     ]) 
    def test_invalid_examples(self, minimum, maximum, expected_min, expected_max): 
     with pytest.raises(AssertionError): 
      assert minimum == expected_min 
      assert maximum == expected_max 


if __name__ == '__main__': 
    pytest.main(args=[__file__]) 

出力

============================= test session starts ============================= 
platform win32 -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 
rootdir: C:\Users\<<user>>\.PyCharmCE2016.3\config\scratches, inifile: 
collected 3 items 

scratch_3.py ... 

========================== 3 passed in 0.02 seconds =========================== 
+0

はい、いいです、ありがとう!(upvoted) – George

4

これは、意図した動作を反映するようにテストを編集するのが最善の方法です(コードの意図する動作の場合)。テストケースは単にあなたのマネージャ/顧客/同僚/などを示すことができるレポートを取得するために使用されるのではなく、ドキュメントの一種です。テストケースは、コードの期待される動作を人々に示します。そのテストを見ている人は、そこに表示されているすべての入力をコードが受け入れると仮定します。

最初の入力と3番目の入力が違法な場合は、別のテストケースを作成する必要があります。このテストケースでは、コードが不正な入力を処理する方法をテストします。

+0

あなたは正しいです。ありがとうございます。(アップアップされました) – George

関連する問題