Python API

Modeは公式の推奨APIです。configure(mode="test")の文字列指定も、既存コードや簡潔な設定のために引き続き利用できます。

python
import niltest
from niltest import Mode

niltest.configure(mode=Mode.TEST)  # @scenarioより前
from your_package.shipping import shipping_fee

result = niltest.run_tests(shipping_fee)
assert result.success
print(result.to_dict())

pytestへ統合する

pytest --niltestを指定すると、各仕様ケースを独立したpytest itemとして収集します。通常のレポート、終了コード、JUnit XML、coverageへそのまま統合されます。

--niltestを付けなければモード変更もモジュールimportも行いません。対象は繰り返し可能な--niltest-moduleかpytest設定へ記載します。

shell
pytest --niltest --niltest-module=your_package.specs
pytest --niltest --junitxml=report.xml --cov=your_package

# pyproject.toml
[tool.pytest.ini_options]
niltest_modules = ["your_package.specs"]

CLI

人が読む結果と機械可読JSONを選べます。モジュール内に登録されたシナリオだけを実行します。

shell
niltest run your_package.specs
niltest run your_package.specs --json

モジュールを設計図として確認

inspectコマンドは関数シグネチャ、入出力型、ケース数、モック可能性、入力診断を一覧またはJSONで出力します。

Markdown形式はケース表、期待値、定義元ファイルと行番号を含み、レビュー資料へそのまま貼り付けられます。従来の--jsonも互換エイリアスです。

your_package.servicesには、Pythonがimportできる対象モジュールのパスを指定します。inspectはモジュールを読み込みますが、仕様ケースを実行しません。

shell
niltest inspect your_package.services                 # terminal
niltest inspect your_package.services --format json   # CI / tools
niltest inspect your_package.services --format markdown # review docs

終了コード

  • 0: すべての仕様ケースが成功
  • 1: ひとつ以上の仕様ケースが失敗
  • 2: 引数、インポート、対象モジュールに問題がある