(A)の紹介
pytestは非常に成熟したフル機能のPythonのテストフレームワークである、主な機能は次のとおりです。
1、簡単かつ柔軟な、使いやすいです。
2、パラメータ化されたサポートしています。
図3に示すように、それは単純なユニットテストをサポートし、複雑な機能をテストすることが可能であり、それはまた、セレン/ appniumテスト自動化、自動テストインターフェース(pytest +要求)のために使用することができます。
4、多くのサードパーティ製プラグインとpytest、およびカスタムなど、より良い品質のpytest - セレン(統合セレン)などの拡張機能、pytest-HTML(完全なテストレポート生成HTML)、pytest-rerunfailures(ケースが失敗したを繰り返し行う)、pytestすることができように-xdist(マルチCPU分布);および
図5に示すように、テストケースと処理をスキップXFAIL。
図6は、非常に良いとジェンキンス統合することができます。
(B)のインストール
ピップによって-U pytest#インストールをインストールピップ
インストールPIP -Uのpytest-HTML
ピップ-Uのpytest-rerunfailuresをインストール
py.test --version#表示pytestバージョン
\ Python27 \ libに\のsite-packages \ pytest.pyc:これはCから輸入pytestバージョン2.7.2であり、
多くの良いサードパーティのプラグインに行くもありますhttp://plugincompat.herokuapp.com/とhttps://pypi.python.org/pypi?%3Aaction=search&term=pytest-&submit=search検索
(C)の例
ここでpytest-ドキュメントのいくつかの例のリストです
1、接頭辞機能をTEST_するために、現在のディレクトリにTEST_(テスト_ *。のPy)または_testサフィックス(* _test.py)ファイルで始まるすべてのデフォルトの実装
インポートpytestの test_sample.py用の#コンテンツ デフFUNC(X): 戻りX + 1 デフtest_answer(): FUNCをアサート(3)== 5
py.test -q test_sample.py実行したり、特定のファイルを指定しPy.test
の例を用いて複数のクラスからなる2、
インポートpytestの test_class.pyの#コンテンツ クラスTestClassを: DEF test_one(自己): X = "この" アサート'H'におけるX DEF test_two(自己): X = "hello"を アサートはhasattr(X、 '確認')
3、Pythonでpytestを呼び出します:python test_class.py
インポートpytestの test_class.pyの#内容 :クラスTestClassを DEF test_one(自己): 印刷'1' 、X = "この" アサート'H'におけるX DEF test_two(自己): 印刷'2つの' X = "hello"を アサートはhasattr( X 'チェック') __name__ == '__main__'の場合: pytest.main( " - Q --html = a.html")
図4に示すように、支持パラメータ化例えば、パラメトリックpytest.mark.parametrizeパラメータ、変数の最初のタプルに、第二の組の変数割り当てのリストであり、このセクションは以下注意深く特定の説明します
# content of test_time.py import pytest from datetime import datetime, timedelta testdata = [ (datetime(2001, 12, 12), datetime(2001, 12, 11), timedelta(1)), (datetime(2001, 12, 11), datetime(2001, 12, 12), timedelta(-1)), ] @pytest.mark.parametrize("a,b,expected", testdata) def test_timedistance_v0(a, b, expected): diff = a - b assert diff == expected @pytest.mark.parametrize("a,b,expected", testdata, ids=["forward", "backward"]) def test_timedistance_v1(a, b, expected): diff = a - b assert diff == expected def idfn(val): if isinstance(val, (datetime,)): # note this wouldn't show any hours/minutes/seconds return val.strftime('%Y%m%d') @pytest.mark.parametrize("a,b,expected", testdata, ids=idfn) def test_timedistance_v2(a, b, expected): diff = a - b assert diff == expected