后端第一步开发完成,第一版回归测试完成
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
插入测试用户,供测试工程师使用。统一密码:123456
|
||||
用法:cd backend && PYTHONPATH=src python3 scripts/seed_test_users.py
|
||||
"""
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
_backend = Path(__file__).resolve().parent.parent
|
||||
if str(_backend) not in sys.path:
|
||||
sys.path.insert(0, str(_backend))
|
||||
|
||||
import bcrypt
|
||||
|
||||
from src.database import get_connection, new_id
|
||||
|
||||
|
||||
def _hash(pwd: str) -> str:
|
||||
"""bcrypt 哈希,与 auth 中 passlib 校验兼容"""
|
||||
return bcrypt.hashpw(pwd.encode("utf-8"), bcrypt.gensalt()).decode("utf-8")
|
||||
|
||||
# 角色枚举与测试账号: (username, role, display_name)
|
||||
TEST_USERS = [
|
||||
("admin", "管理员", "管理员"),
|
||||
("market", "市场部", "市场部"),
|
||||
("engineer", "工程部", "工程部"),
|
||||
("tech", "技经部", "技经部"),
|
||||
("finance", "财务部", "财务部"),
|
||||
("material", "物贸部", "物贸部"),
|
||||
]
|
||||
|
||||
TEST_PASSWORD = "123456"
|
||||
|
||||
|
||||
def main():
|
||||
pwd_hash = _hash(TEST_PASSWORD)
|
||||
with get_connection() as conn:
|
||||
cur = conn.cursor()
|
||||
for username, role, display_name in TEST_USERS:
|
||||
uid = new_id()
|
||||
try:
|
||||
cur.execute(
|
||||
"INSERT INTO users (id, username, password_hash, role, display_name) VALUES (%s, %s, %s, %s, %s)",
|
||||
(uid, username, pwd_hash, role, display_name),
|
||||
)
|
||||
conn.commit()
|
||||
print(f"已插入: {username} ({role})")
|
||||
except Exception as e:
|
||||
if "Duplicate entry" in str(e) or "1062" in str(e):
|
||||
print(f"已存在,跳过: {username}")
|
||||
else:
|
||||
raise
|
||||
cur.close()
|
||||
print(f"\n测试账号统一密码: {TEST_PASSWORD}")
|
||||
print("账号列表: admin, market, engineer, tech, finance, material")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user