ホームページ  >  記事  >  バックエンド開発  >  Pythonの勉強ノート - 単体テスト、UnitTest

Pythonの勉強ノート - 単体テスト、UnitTest

黄舟
黄舟オリジナル
2017-01-17 14:25:371156ブラウズ

いわゆる単体テストは、モジュール、関数、またはクラスの正確さをテストするテストの一種です。


テスト駆動開発手法は、テスト駆動開発と呼ばれます。この開発モデルは、単なるテストではなく、要件を分解し、コードの品質を確保する手段です。


単体テストは、関数、モジュール、またはクラスの機能がテスト中にニーズを満たしていることを確認するだけではありません。同時に、将来クラスや関数を変更する際にも役立ちます。必要なのは、変更が関数に影響を与えないことを確認するために単体テストを再度実行することだけです。


もちろん、単体テストを行うとコードの量も大幅に増加します。


単体テスト コードを作成するには、Python の単体テスト パッケージを導入する必要があります。新しい単体テスト クラスを作成できますが、このクラスは Unitest.TestCase クラスを継承する必要があります。テスト クラスのテスト メソッドは test で始まる必要があります。そうしないと実行されません。これで、unitest.TestCase のメソッドを使用できるようになります。よく使われるメソッドは次のとおりです:


assertEqual(self, first, Second) # 期待値かどうかを判断します
assertTrue(bool) # 真であるかどうかを判断します
assertRaises(Exception) # 特定の例外をスローするかどうかを判断します。

例を挙げてみましょう:


まずクラスカスタムクラスを定義してから、それを単体テストします。


Dict.py

class Dict(dict):
def __init__(self, **kwargs):
super(Dict, self).__init__(**kwargs)
def __getattr__(self, item):
try:
return self[item]
except KeyError:
raise AttributeError
def __setattr__(self, key, value):
self[key] = value
import unittest
from Dict import Dictclass DictTest(unittest.TestCase):
def test_init(self):
d = Dict(a=100, b=200)
self.assertEqual(d.a, 100)
self.assertEqual(d.b, 200)
self.assertTrue(isinstance(d, dict))
def test_key(self):
d = Dict()
d['key'] = "300"
self.assertEqual(d["key"], "300")
def test_attar(self):
d = Dict()
d.attar = "attar"
self.assertTrue("attar" in d)
self.assertEqual(d.attar, "attar")
def test_keyError(self):
d = Dict()
with self.assertRaises(KeyError):
value = d["NotExisted"]
def test_attarError(self):
d = Dict()
with self.assertRaises(AttributeError):
value = d.not_existed
if __name__ == '__main__':
unittest.main()

dict のサブクラスを定義したので、同時にそのキーと値をテストする必要があります。これはクラスであるため、その属性もテストする必要があります。


私たちが定義したunittest.TestCaseサブクラスは、通常のPythonファイルのように実行するために、次の2つの文を書く必要があります:

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


さらに、次の方法で複数のテストを実行することもできます


python -munittest DictTest
setUp関数とtearDown関数。

setUp関数とtearDown関数は2つの特別な関数です。 setUp はすべての単体テストが開始される前に実行され、tearDown 関数はすべての単体テストが実行された後に実行されます。これら 2 つの関数の主なアプリケーション シナリオは次のとおりです。たとえば、データベースに接続する必要がある場合、setUp 関数で接続を開始し、tearDown 関数で接続を閉じることができます。

上記は Python 学習ノート - 単体テスト、UnitTest コンテンツです。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。