# -*- coding: utf-8 -*- """检查点 6:分批运行已完成的属性测试(P1, P2, P4, P5, P6, P7, P8, P9, P14, P15)""" import subprocess import sys import time CLASSES = [ "TestProperty1MigrationIdempotency", "TestProperty14JwtPayloadStructure", "TestProperty15JwtExpiredInvalidRejection", "TestProperty2LoginCreateFindUser", "TestProperty4ApplicationCreation", "TestProperty5PhoneFormatValidation", "TestProperty6DuplicateApplicationRejection", "TestProperty7MatchingMerge", "TestProperty8ReviewOperations", "TestProperty9NonPendingReviewRejection", ] results = {} for cls in CLASSES: t0 = time.time() r = subprocess.run( [ sys.executable, "-m", "pytest", f"tests/test_auth_system_properties.py::{cls}", "-v", "--tb=short", "-x", ], capture_output=True, text=True, timeout=600, ) elapsed = time.time() - t0 passed = r.returncode == 0 results[cls] = {"passed": passed, "time": f"{elapsed:.1f}s", "rc": r.returncode} status = "PASS" if passed else "FAIL" print(f"{status} {cls} ({elapsed:.1f}s)", flush=True) if not passed: lines = (r.stdout + r.stderr).strip().split("\n") for line in lines[-30:]: print(f" | {line}") print() print("=== 汇总 ===") all_pass = True for cls, info in results.items(): s = "PASS" if info["passed"] else "FAIL" if not info["passed"]: all_pass = False print(f" {s} {cls} ({info['time']})") print() if all_pass: print("全部通过!") else: print("存在失败的测试,请检查上方输出。")