57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
# -*- 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("存在失败的测试,请检查上方输出。")
|