pytestコマンドラインインタフェースの高度な使い方

pytestはPythonでよく用いられるテストフレームワークの一つです。基本的な使い方に慣れた後、次のステップとしてコマンドラインインタフェース(CLI)での高度な使い方をマスターすることが重要です。この記事では、pytestのコマンドラインオプションについて、基本的な使い方から高度なテクニックまで詳しく解説します。

目次

pytestコマンドラインオプションの基本

pytestをコマンドラインから使用する際には、多くのオプションが利用可能です。以下は基本的なものです。

  • -v: 詳細な出力
  • -k: キーワードでテストを絞る
  • –junitxml: JUnit形式のXMLレポートを生成

高度なオプションの使用

さて、次に高度なオプションについて説明します。これらのオプションは、より複雑なテストケースや大規模なプロジェクトで有用です。

マークによるテストのフィルタ

pytestでは、`-m`オプションを使用してマークによってテストをフィルタすることができます。

# マークが'slow'のテストだけを実行する場合
pytest -m slow

マークの定義と利用

pytest.iniやpyproject.tomlにマークを事前に定義することも可能です。これにより、プロジェクト全体でマークを統一的に管理できます。

# pyproject.toml
[tool.pytest.ini_options]
markers =
    slow: marks tests as slow (deselect with '-m "not slow"')

pytest-xdistの使用

pytest-xdistはpytestのプラグインであり、テストを並列に実行することができます。これにより、テストの速度が大幅に向上します。

# 4つのCPUコアで並列にテストを実行
pytest -n 4

応用例

特定のディレクトリのテストのみを実行

特定のディレクトリに含まれるテストだけを実行したい場合もあります。そのような場合には以下のように実行します。

# tests/functional ディレクトリのテストだけを実行
pytest tests/functional

特定のエラーメッセージを持つテストをスキップ

特定のエラーメッセージを持つテストをスキップすることもできます。これには`pytest.mark.skipif`デコレータが使えます。

import sys
@pytest.mark.skipif(sys.version_info < (3, 6), reason="requires Python 3.6 or higher")
def test_function():
    ...

まとめ

pytestのコマンドラインオプションは非常に多機能であり、高度な使い方を知っていると大規模なプロジェクトでも非常に便利です。特に、マークの利用やpytest-xdistのようなプラグインを用いることで、テストの効率が大きく向上するでしょう。

コメント

コメントする

目次