Pytest 07-構成

4205 ワード

7.構成


7.1 pytestプロファイルの概念


以下に示すように、pytestでよく見られる非テストファイル.
  • 1.pytest.ini:pytestのプライマリプロファイルで、pytestのデフォルトの動作を変更できます.構成可能なオプションは
  • がたくさんあります.
  • 2.conftest.py:hook関数とfixtureがファイルが存在するディレクトリとそのサブディレクトリ
  • に作用するローカルのプラグインライブラリ
  • 3.__init__:各テストサブディレクトリには、名前の競合を解決するためによく使用されるパッケージを表すファイルが含まれている可能性があります.
        pytest.iniの例は以下の通りです.
    [pytest]
    addopts = -rsxX -L --tb=short --strict
    xfail_stric = true
    ...
    

    7.1.1 pytest--helpを使用してiniファイルを表示するオプション

    >>> pytest --help
    [pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:
    
      markers (linelist):       markers for test functions
      empty_parameter_set_mark (string): default marker for empty parametersets
      norecursedirs (args):     directory patterns to avoid for recursion
      testpaths (args):         directories to search for tests when no files or directories are given in
      usefixtures (args):       list of default fixtures to be used with this project
      python_files (args):      glob-style file patterns for Python test module discovery
      python_classes (args):    prefixes or glob names for Python test class discovery
      python_functions (args):  prefixes or glob names for Python test function and method discovery
    

    7.1.2プラグインはiniファイルオプションを追加できます


    前にリストしたオプションを除いて、プラグインとconftestを使用します.pyファイルには、新しいオプションも追加できます.新しいオプションはpytest--helpで表示することもできます.

    7.2デフォルトコマンドラインオプションの変更


     いくつかのオプションが頻繁で、毎回繰り返し入力したくない場合はpytestを変更できます.iniファイルのaddopts設定は、次のようになります.
    [pytest]
    addopts = -rsxX -L --tb=short --strict
    

    7.3スペルミスを防ぐためにタグを登録する


    カスタムタグはテスト作業を簡素化し、指定したタグを使用してサブセットを実行できますが、タグのスペルを間違えやすいようにします.デフォルトでは、プログラムエラーは発生しません.pytestは、作成された別の新しいタグと見なします.このような状況を避けるためにpytest.iniにタグを登録します.次のようになります.
    [pytest]
    markers =
       smoke: Run the smoke test function
       get:   Run the get test function
    

    タグ付けが完了したら、pytest--markersで次のように表示できます.
    >>> pytest --markers
    
    @pytest.mark.smoke: Run the smoke test function
    @pytest.mark.get:   Run the get test function
    

    登録されていないタグは--markersリストに表示されません.--strictオプションを使用すると、スペルミスのマークまたはマークされていないマークがエラーになります.

    7.4 pytestの最低バージョン番号を指定する


     minversionオプションは、テスト・インスタンスを実行するpytestの最低バージョンを指定します.例は次のとおりです.
    [pytest]
    minversion = 5.2
    

    7.5 pytestを指定して一部のディレクトリを無視する


    デフォルトでは、指定したディレクトリとそのサブディレクトリが検索されます.ディレクトリをスキップする場合はnorecursedirsオプションを使用します.
    norecursedirsのデフォルト設定は.*build dist CVS _darcs{arch}と*.egg
    例は次のとおりです.
    [pytest]
    norecursedirs = .* build dist CVS _darcs \{arch\} *.egg
    

    7.6テストディレクトリの指定


     norecursedirsは、どのディレクトリにアクセスしないかを指定します.testpathsはpytestが実行テストをどこで検索するかを指定します.testpathsはルートディレクトリに対する一連のパスで、テスト例の検索範囲を限定します.pytestがファイルディレクトリパラメータまたはテスト例識別子を指定しない場合にのみ有効になります.次のようになります.
    [pytest]
    testpaths = test
    

    7.7テスト検索のルールの変更


     pytestは、一定のルールに基づいてテストを検索し、実行します.標準的なテスト検索ルールは次のようになります.
  • 1.1つ以上のディレクトリから検索を開始し、指定しない場合、デフォルトは現在のディレクトリ
  • です.
  • 2.このディレクトリとそのサブディレクトリでテストモジュールを検索し、テストモジュールはtest_である.pyまたは_test.pyのファイル
  • 3.テストモジュールでtest_で検索先頭の関数名またはTest先頭のクラスをフィルタし、__を含むinit__()のクラス
  • 1.python_classes
      通常、pytestのテスト検索ルールはTest*で始まるテストクラスを探し、このクラスには__を含めることはできません.init__()メソッド.しかし、このフォーマットに従ってクラスに名前を付けていない場合(Testなど)、どうすればいいですか?この場合、python_を使用できます.classesはこの問題を解決します.次のようになります.
    [pytest]
    python_classes = *Test Test* *Suite
    

    2.python_files
      とpython_classes類似、python_filesは、次のように検索テストモジュールを変更するルールです.
    [pytest]
    python_files = test_* *_test check_*
    

    3.python_functions
    前の2つと似ていますpython_functionsは、次のように検索テスト関数のルールを変更します.
    [pytest]
    python_functions = test_* *_test check_*
    

    7.8 XPASSを無効にする


      設定xfail_strict=Trueはそれらを@pytestとマークすることができる.mark.xfailで実際に実行されたテスト例もテストに失敗したと報告されています.次のように設定します.
    [pytest]
    xfail_strict = True
    

    7.9ファイルの衝突を避ける


    Pythonのモジュールとパッケージについて説明する際、名前の競合を避けるためにモジュールとパッケージを使用できます.テストの過程で、同じように解決の考え方をすることができます.