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: 引数、インポート、対象モジュールに問題がある