開発モードはインポート前に有効化
Pythonのデコレータはモジュール読込時に評価されます。testまたはmockを使う場合は、対象モジュールを読み込む前にNILTEST_MODEを設定してください。CLIは自動的にtestを選んでからモジュールを読み込みます。
python
# Python: importする前に設定
from niltest import Mode, configure
configure(mode=Mode.TEST)
# macOS / Linux
NILTEST_MODE=test python app.py
# Windows PowerShell
$env:NILTEST_MODE = "test"; python app.py呼び出し時コストがゼロの宣言型API
既存の if expect: はそのまま利用できます。関数内の真偽判定もなくしたい場合は、case() を @docs で関数の外側に宣言します。
@scenario を外側、@docs を内側に置いてください。既定のproductionでは元関数がそのまま返り、実行時のラッパーもniltest由来の分岐もありません。
python
from niltest import case, docs, scenario
@scenario("配送料")
@docs(case("プレミアム会員", given={"premium": True}, returns=0))
def shipping_fee(premium: bool) -> int:
return 0 if premium else 500正確な性能保証
productionモードではscenarioラッパーを生成しません。expect.caseの引数辞書も生成されません。
ソースに書いた if expect: の真偽判定コストは残ります。完全なゼロコストではなく、予測可能な最小経路です。
対象環境で測る
shell
python benchmark_production.py