Pythonのユニットテストフレームワーク:pytest

(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

おすすめ

転載: www.cnblogs.com/yaoteng/p/10979024.html