@@ -58,11 +58,14 @@ def cmd_tests(args: argparse.Namespace) -> None:
5858 pyenv .pop ("MDM_API_KEY" , None )
5959 pyenv .pop ("MDM_AUTH_MODE" , None )
6060 py = sys .executable
61- tests = [
62- str (MODEL_ROOT / "tests" / "test_api_phase1.py" ),
63- str (MODEL_ROOT / "tests" / "test_selector.py" ),
64- ]
65- _run ([py , "-m" , "pytest" , "-q" , * tests ], env = pyenv )
61+ tests_path = getattr (args , "tests_path" , None ) or str (MODEL_ROOT / "tests" )
62+ maxfail = str (getattr (args , "maxfail" , 1 ))
63+ kexpr = getattr (args , "tests_k" , None )
64+ cmd = [py , "-m" , "pytest" , "-q" , f"--maxfail={ maxfail } " ]
65+ if kexpr :
66+ cmd += ["-k" , kexpr ]
67+ cmd += [tests_path ]
68+ _run (cmd , env = pyenv )
6669
6770
6871def _wait_for (url : str , timeout_s : int = 30 ) -> None :
@@ -281,6 +284,9 @@ def add_api_opts(sp):
281284 sp_data .set_defaults (func = cmd_data )
282285
283286 sp_tests = sub .add_parser ("tests" , help = "Run unit tests (pytest)" )
287+ sp_tests .add_argument ("--tests-path" , default = None , help = "Path to tests (default: medical.../tests)" )
288+ sp_tests .add_argument ("--tests-k" , default = None , help = "pytest -k expression to filter tests" )
289+ sp_tests .add_argument ("--maxfail" , type = int , default = 1 , help = "Fail fast after N failures (default: 1)" )
284290 sp_tests .set_defaults (func = cmd_tests )
285291
286292 sp_api = sub .add_parser ("api" , help = "Smoke test /diagnose endpoint" )
@@ -308,6 +314,9 @@ def add_api_opts(sp):
308314 sp_suite .add_argument ("--with-rate" , action = "store_true" )
309315 sp_suite .add_argument ("--with-adaptive" , action = "store_true" )
310316 sp_suite .add_argument ("--report-json" , default = None , help = "Write JSON summary to this path" )
317+ sp_suite .add_argument ("--tests-path" , default = None )
318+ sp_suite .add_argument ("--tests-k" , default = None )
319+ sp_suite .add_argument ("--maxfail" , type = int , default = 1 )
311320 sp_suite .set_defaults (func = cmd_suite )
312321
313322 return p
0 commit comments