テストコード
関数やクラスを作成するときに、テスト関数を作成することもできます。テストを通じて、コードがさまざまな入力に対して正常に動作することを確認できます。プログラムに新しいコードを追加するときに、そのコードがプログラムの既存のルーチンを壊さないことを確認するためにテストすることもできます。モジュールを頻繁にテストします。
Pythonモジュールのunittestのツールを使用してコードをテストします。テストに合格するとどうなるか、失敗するとどうなるかを理解し、テストが失敗するとわかった場合にコードを改善する方法を知り、プロジェクトにいくつのテストを作成する必要があるかを知ることができます。関数とクラスをテストする方法を理解します。
プログラムの実行中、常にさまざまなエラーが発生します。一部のエラーは、プログラム作成の問題によって発生します。たとえば、この種のエラーはバグと呼ばれ、バグは修正される必要があります。
テスト関数
単体テストとテストケース
Pythonのunittestモジュールは、関数の特定の側面に問題がないことを検証するために使用されるコードテストツールを提供します。 テストケースは、関数があらゆる面で問題がないことを確認するための一連の単体テストです。 フルカバレッジのテストケースには、関数の考えられるさまざまな使用方法をカバーする、完全なテストケースのセットが含まれています。
テストに合格できる
関数のテスト関数を作成するには、まずモジュールunitestとテスト対象の関数をインポートし、unittest.TestCaseを継承するクラスを作成し、関数のさまざまな側面をテストする一連のメソッドを作成します。関数の動作。 test という名前を付けるのが最善です。 U name_function.py
def get_Formatted_name (最初、最後):
"" "" "" "" Full_name = FIRST + '' + Last Return full_name.tital ( ; input( " n名前を教えてください: ") if first == 'q': break last = input("姓を教えてください: ") |
if last == 'q':
Break
formatted_name = get_formatted_name(first, last)
print("tNeatly formatted name: " + formatted_name + '.')
test_name_function.py
imポート単体テスト
からname_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
"""Test name_function.py"""
def test_first_last_name(self):
"""Jan のような名前を正しく処理できますかジョプリンは? "
formatted_name = get_formatted_name('janis', 'joplin') self.assertEqual(formatted_name, 'Janis Joplin')
unittest.main()
|
便利な機能の 1 つ: アサーション メソッド、assertEqualアサーションメソッドは、得られた結果が期待値と同じかどうかを検証するために使用されます。 失敗したテスト
テストが失敗した場合は、テストを変更せず、テストが失敗した原因となったコードを修正します。関数に加えた変更を確認し、関数が通常どおりに動作しない原因となった変更を見つけます。期待される。 モジュール内のさまざまなアサーションメソッド
6つの一般的なアサーション
目的
assertEqual(a, b)
a == b を確認してください
|
assertNotEqual(a, b)
a != b
assertTrue(x)
x が True であることを検証 |
| assertFal se(x)
検証その x は False です
|
| assertIn(item, list)
項目がリストにあることを確認してください |
| assertNotIn(item, list)
項目がリストにないことを確認してください |
Method setUp()
Unittest.TestCase クラスにはメソッド setUp() が含まれており、これを使用すると、オブジェクトを 1 回だけ作成し、すべてのテスト メソッドで使用できます。
survey.py
class AnonymousSurvey(): >
自己応答 = [] def show_question(self):
"" "display questionnaire" "
print(question)
defstore_response(self、new_response):収集されたすべての回答を表示します" ""
言語_survey。 py
fromアンケート import AnonymousSurvey#質問を定義し、アンケートを表すAnonymousSurveyオブジェクトを作成しますquestion = "最初に話せるようになった言語は何ですか?"my_survey = AnonymousSurvey(question) #質問を表示し、回答を保存します my_survey .show_question()print("終了するには、いつでも 'q' を入力してください。n") True の場合: response = input("Language: ") if response == 'q': | Break my_survey.store_response(response) # アンケート結果を表示 print("nアンケートにご協力いただいた皆様、ありがとうございました!")my_survey.show_results()
test_survey.py
インポートunittest
アンケートからインポートAnonymousSurvey
class TestAnonymousSurvey(unittest.TestCase):
"""AnonymousSurveyクラスのテスト"""
def セットアップ( self) :
"" "" "使用するテスト方法用のアンケート オブジェクトと一連の回答を作成します" "
Question ="初めて話すことを学びましたか? "
Self.My_Survey =匿名アンケート (質問) self.responses = ['英語', 'スペイン語', '中国語'] responses[0]) self.assertIn(self.responses[0], self.my_survey.responses) def test_store_three_responses(self): """3 つのテストの回答は適切に保存されます""" self.responses の応答: responses)
unittest.main()
メソッドsetUp( ) は 2 つのことを行います: アンケート オブジェクトを作成します。 これら 2 つを格納する変数名にはプレフィックス self が含まれる (つまり、属性に格納される) ため、このクラスのどこでも使用できます。これにより、アンケートの回答者も回答も作成されないため、両方のテスト方法が簡単になります。
| 数値の入力にはint()を使用します input()で返されるデータ型はstr(文字列)なので、Pythonは直接入力された数値を文字列に変換します。 str を整数と直接比較することはできません。まず str を整数に変換する必要があります。 Python には、これを実現するための int() 関数が用意されています
height = input("身長は何インチですか? ") height = int(height) #整数に変換
モジュロ演算子
数値情報を扱う場合、モジュロ演算子 (%) は 2 つの数値を除算し、剰余を返します: >>> 4 % 3
1 >>> 5 % 32
> 6 % 3
0
> 7 % 3
1
If数値の場合、余りは 0 になるため、モジュロ演算子は 0 を返します。これを使用して、数値が奇数か偶数かを判断できます。
|
|
以上がPython の基本のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。