pythonユニットテスト&ホワイトボックステスト-簡単な関数からユニットテストに着手
4301 ワード
前言:ユニットテストはプログラムの品質を保証する礎であり、プログラミングの基礎を試す最初の関門でもある.ユニットテストの作成と実行は、ターゲットコードの動作が私たちの期待と一致していることを証明するためであり、上級モジュールに良好な安定した実行環境を提供するためである.
1.対象関数のすべての論理分岐を観察し、それらの設計例について:
プロジェクトのニーズは「スーパーマンかどうかを判断する」です.以下、Python 3に基づいて、判断カバー法でパラメータを設計してユニットテストを行います.
2.
分岐&ステップ
1
2
3
if
0
1
-
if
-
0
1
return
-
-
1
3.目標関数のすべてのパスを巡る考え方:
次にこのターゲット関数に対してテスタを設計し,3組の条件でテストを上書きした.
Python 3ベースのコードの例-テスト関数
4.スクリプトを実行し、テスト結果を表示します.
5.使用例を追加し、スクリプトを実行して新しいテスト結果を表示します.
1.対象関数のすべての論理分岐を観察し、それらの設計例について:
プロジェクトのニーズは「スーパーマンかどうかを判断する」です.以下、Python 3に基づいて、判断カバー法でパラメータを設計してユニットテストを行います.
# coding = utf-8
import pytest
""" : (Superman)"""
def is_superman(skill, hand):
# ?
can_fly = skill
# 10 ?
have_ten_fingers = hand
if not can_fly:
return False
if not have_ten_fingers:
return False
# True, " "
return True
2.
is_superman
関数の「論理分岐」テーブルを設計すると、3ステップ(数列で数ステップ)が表示されるので、少なくとも3つの例を設計する必要があります.** : 0 False,1 True**
分岐&ステップ
1
2
3
if
0
1
-
if
-
0
1
return
-
-
1
3.目標関数のすべてのパスを巡る考え方:
次にこのターゲット関数に対してテスタを設計し,3組の条件でテストを上書きした.
Python 3ベースのコードの例-テスト関数
""" : 3 , """
def test_person():
""" python 0==False,1==True , 3 :"""
test_cases = [
[0, 0],
[1, 0],
[1, 1]
]
""" 3 , """
expected_results = [False, False, True]
"""for """
for i in range(len(test_cases)):
assert is_superman(test_cases[i][0], test_cases[i][1]) == expected_results[i]
if __name__ == '__main__':
pytest.main()
4.スクリプトを実行し、テスト結果を表示します.
============================= test session starts ==============================
platform darwin -- Python 3.6.8, pytest-5.0.1, py-1.8.0, pluggy-0.12.0
rootdir: /Users/terry/PycharmProjects/SuperMancollected 1 item
test_func_unittest.py . [100%]
=========================== 1 passed in 0.01 seconds ===========================
Process finished with exit code 0
5.使用例を追加し、スクリプトを実行して新しいテスト結果を表示します.
def test_person():
test_cases = [
[0, 0],
[1, 0],
[1, 1],
[0, 1], #
============================= test session starts ==============================
platform darwin -- Python 3.6.8, pytest-5.0.1, py-1.8.0, pluggy-0.12.0
rootdir: /Users/terry/PycharmProjects/SuperMancollected 1 item
test_func_unittest.py F
test_func_unittest.py:26 (test_person)
False != True
Expected :True
Actual :False
def test_person():
""" python 0==False,1==True , 3 :"""
test_cases = [
[0, 0],
[1, 0],
[1, 1],
[0, 1],
]
""" 3 , """
expected_results = [False, False, True, True]
"""for """
for i in range(len(test_cases)):
> assert is_superman(test_cases[i][0], test_cases[i][1]) == expected_results[i]
E assert False == True
E + where False = is_superman(0, 1)
test_func_unittest.py:41: AssertionError
[100%]
=================================== FAILURES ===================================
_________________________________ test_person __________________________________
def test_person():
""" python 0==False,1==True , 3 :"""
test_cases = [
[0, 0],
[1, 0],
[1, 1],
[0, 1],
]
""" 3 , """
expected_results = [False, False, True, True]
"""for """
for i in range(len(test_cases)):
> assert is_superman(test_cases[i][0], test_cases[i][1]) == expected_results[i]
E assert False == True
E + where False = is_superman(0, 1)
test_func_unittest.py:41: AssertionError
=========================== 1 failed in 0.04 seconds ===========================
Process finished with exit code 0