著者:HelloGitHub- Prodesire
「オープンソース・プロジェクトの説明」シリーズのHelloGitHub、プロジェクトのアドレスします。https://github.com/HelloGitHub-Team/Article
、鼻
鼻は、サードパーティのユニットテストフレームワークであり、それは完全に互換性がありunittest
、かつテストフレームワークの活用として知られています。
その後、nose
ほかunittest
のすべての機能が、また、どのような利点を持っていますか?
1.1書き込みユースケース
継承されたの製造にことを除いて準備方法の例たunittest.TestCaseテストクラスが、のように書くこともできるテストクラスを継承していません。例えば、フォームに書き込まがするnose
テストクラスとして扱います。
from nose.tools import raises
class TestStringMethods:
def test_upper(self):
assert 'foo'.upper() == 'FOO'
def test_isupper(self):
assert 'FOO'.isupper()
assert not 'Foo'.isupper()
@raises(TypeError)
def test_split(self):
s = 'hello world'
assert s.split() == ['hello', 'world']
# check that s.split fails when the separator is not a string
s.split(2)
もちろん、クラスがテストを継承していないunittest.TestCase
、あなたは内蔵のすべてのタイプを使用することができなくなりassertXXX
、エラーがコンテキストのユースケースを発生し、より詳細な情報を入手することができませんでし主導の方法を、。
また、nose
また、サポート関数の定義を多くの単純なテストシナリオは大きな利便性をもたらす与える、テストとして:
def test_upper():
assert 'foo'.upper() == 'FOO'
そして、実施例1.2で検出を実行
unittest
発見は、ユースケースと実施能力をサポートし、nose
サポートされています。
nose
例で見つかったの自動サポート(再帰的に):
- デフォルトでは、すべて含まれている現在のディレクトリにある
test
テストケースを、しかし含まれていない_
ユースケースの始まりを- 使用する
nosetests
コマンドを
- 使用する
-w
ディレクトリパラメータは、自動検出を指定する-m
パラメータは、クラス名のパターン(正規の試合)を使用して、ファイルケース、ディレクトリ機能を指定しますnosetests -w project_directory "test_.+"
nose
また、指定されたユースケースの実装をサポートしています。
- テストモジュールを指定します。
nosetests test.module
- テストクラスを指定します。
nosetests a.test:TestCase
- 試験方法を指定します
nosetests another.test:TestCase.test_method
- テストファイルのパスを指定します。
nosetests /path/to/test/file.py
- 試験クラスファイルパス+(されたテストまたはテスト機能を指定
unittest
サポートされていません)nosetests /path/to/test/file.py:TestCase
nosetests /path/to/test/file.py:TestCase.test_method
nosetests /path/to/test/file.py:test_function
1.3テスト・フィクスチャ(備品)
nose
サポートに加えてunittest
サポート事前定義されたテストとクリーンな方法を、また、方法のシンプルな定義をサポートしています。
def setup_func():
"set up test fixtures"
def teardown_func():
"tear down test fixtures"
@with_setup(setup_func, teardown_func)
def test():
"test ..."
単に前面とによる2つの洗浄方法表すために使用される関数定義nose.tools.with_setupデコレータ装飾テスト機能を、nose
前に各テストの後に行われる事前定義された機能およびクリーンアップを行います。
1.4サブテスト/テストジェネレータ
nose
サポートに加えて、またつまり、サブライトテストのより強力な方法をサポートして、実装。unittest
TestCase.subTest
测试生成器(Test generators)
yield
次の例では、我々は定義test_evens
5つのサブテストを作成するテスト機能を、check_even
:
def test_evens():
for i in range(0, 5):
yield check_even, i, i*3
def check_even(n, nn):
assert n % 2 == 0 or nn % 2 == 0
また、と比較してunittest.TestCase.subTest
複数のサブテストのみ試験前回実行し、クリーンアップすることができ、サポートする各サブテストのような、事前テストを実行し、クリーンアップ:nose
测试生成器
def test_generator():
# ...
yield func, arg, arg # ...
@with_setup(setup_func, teardown_func)
def func(arg):
assert something_about(arg)
1.5プラグインシステム
nose
比べてunittest
最大の利点の一つの有用なプラグインの多くが付属して、プラグインシステムであり、サードパーティのプラグインが豊富にあります。だから、より多くのことを行うことができます。
これは次のようにしているプラグインが付属しています:
- AllModules:すべてのモジュールによって収集例
- ATTRIB:使用するために実施例をタグ付けし、指定されたタグを含む実施形態で実行
- キャプチャ:の標準出力例をキャプチャ
- 収集:ユースケースはすぐに集まります
- 表紙:統計コードカバレッジ
- デバッグ:デバッグの患者がでPDBを入力しません
- 非推奨ので標識した非推奨例:
- doctest:実行中のドキュメントユースケース
- 詳細失敗:アサーションは、コンテキスト情報を提供するために失敗しました
- アイソレート:保護ケースは、副作用のいくつかの影響を避けるために
- Logcapture:キャプチャログ出力
- マルチプロセス:パラレル実行の例
- 教授:分析のためのホットアナライザ使用
- スキップ:で標識した例をスキップ
- テストID:出力の各ユースケース名のテストIDを追加
- xUnitフレーム:出力形式のテスト結果のxUnit
サードパーティ製のライブラリは、HTML形式の中にテストレポートを生成するなど、多様である鼻htmloutputなど、もはやここに記載されているではありません。
おかげでnose
、プラグインエコロジーの富、nose
時間自体は完全に我々のテストのニーズを満たすことができない、あなたはプラグインをインストールして、できるnosetests
プラグインの特定のパラメータを指定して、コマンドラインでプラグインを使用することは非常に簡単にすることができます提供します。
比較するとunittest
、我々は、追加のテストロジックを開発するために彼らの多くの労力を節約することができます。
二、nose2
nose2がある鼻の後継。
彼らのアイデアは、簡単にテストケースを書いて実行するようにすることです。
彼らは、このような互換性など、多くの類似点を持っているunittest
、プラグインシステムと、子テストをサポートするテストケースとしての機能をサポートしています。しかし、多くの異なる点があり、いくつかの重要な相違点は次のとおりです。
- 検索と負荷テスト
nose
自己充足、不活性な方法の試験モジュールとロード、機能モジュールのロードを実行ロード。nose2
組み込みによるインポート()の実行例次に、モジュールに導入し、まずロードされたのですnose2
サポートされていないnose
ような実施形態のように、ファイル構造など、すべてのサポートされた構造の試験項目、nose2
その中にはサポートされていません。
.
`-- tests
|-- more_tests
| `-- test.py
`-- test.py
- 事前試験およびクリーンアップ機能レベル
nose
支持メソッド、クラス、モジュール、及びパッケージレベル試験およびプレクリーンアップ関数nose2
プリパッケージレベルのテストおよびクリーンアップ機能がサポートされていません。
- サブテスト
nose2
サブテストを達成するために使用される検査生成装置をサポートすることに加えて、ほかの使用サポートパラメトリック検定(パラメータ化テスト)サブテストを実現しますnose2
また、同様にnose
テストクラス(継承されないで、同じ機能とテスト支援unittest.TestCase
)とパラメトリックテストとテストジェネレータをサポートするだけでなく、連続をサポートするために、unittest.TestCase
テストクラスを使用して
- の設定
nose
全てのプラグインコマンドライン引数を介して構成された所望の構成nose2
人々がより快適に読む最小限に抑えるために、設定ファイル、コマンドラインパラメータによって制御され、
のより詳細な比較公式文書。
IIIの概要
nose
そして、nose2
中に収容されるようにunittest
彼らのターゲットを参照するのに十分で、それは本来の使用して、それらの誘致することでunittest
、それらを使用するようにユーザーを。彼らは実際にそれをやりました!
nose
そしてnose2
、ユースケース、テストフィクスチャの準備の改善を行い、子供が毎日使用する場合の準備が簡単に、より柔軟にするために持ってテストします。プラグインシステムを導入しながら、さらにユニットテストフレームワークの実装を行い、可能なテスト機能に基づいて、高次機能の多くを共有して大きなステップ、の能力を強化します。不思議多くの開発者は、彼らのためにソフトスポットを持っていません。
「オープンソース・プロジェクトのシリーズの説明」 -オープンソース・プロジェクトは、もはや恐れているの人々が興味を持ってできるように、スポンサーのオープンソース・プロジェクトだけではもはやありませんしましょう。私たちの記事に従ってください、あなたはプログラミングの楽しさ、オープンソースプロジェクトの使用を発見し、そう単純で関与することが判明します。ウェルカムメッセージは〜より多くの人々は、オープンソース、オープンソースの貢献と恋に落ちるように、私たちに参加し、私達に連絡します