| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- # -*- coding: utf-8 -*-
- """双跑对比:PHP 线上响应 vs Java 本地响应,逐字段 diff"""
- import json
- import re
- import sys
- from pathlib import Path
- import requests
- from _root import ROOT
- ROOT = Path(str(ROOT))
- src = Path(r"F:\import goods\upload_goods.py").read_text(encoding="utf-8")
- token = re.search(r'TOKEN\s*=\s*"([^"]+)"', src).group(1)
- params = {"page": 1, "listRows": 15}
- php = requests.post("https://shop.qinys.cn/index.php?s=/store/goods/list",
- headers={"Access-Token": token}, data=params, timeout=30).json()
- java = json.load(open(ROOT / "golden" / "java_goods_list.json", encoding="utf-8"))
- php_items = php["data"]["list"]["data"]
- java_items = java["data"]["list"]["data"]
- print(f"PHP 条数: {len(php_items)} Java 条数: {len(java_items)}")
- php_map = {g["goods_id"]: g for g in php_items}
- java_map = {g["goods_id"]: g for g in java_items}
- print(f"PHP goods_id: {sorted(php_map)}")
- print(f"Java goods_id: {sorted(java_map)}")
- def norm(v):
- if isinstance(v, str):
- return v
- if isinstance(v, bool):
- return v
- return v
- diff_count = 0
- for gid in sorted(set(php_map) & set(java_map)):
- p, j = php_map[gid], java_map[gid]
- pkeys, jkeys = set(p), set(j)
- for k in sorted(pkeys - jkeys):
- print(f"[缺字段] goods {gid} 缺少 {k}")
- diff_count += 1
- for k in sorted(jkeys - pkeys):
- print(f"[多字段] goods {gid} 多出 {k}")
- diff_count += 1
- for k in sorted(pkeys & jkeys):
- pv, jv = p[k], j[k]
- if type(pv).__name__ != type(jv).__name__:
- print(f"[类型] goods {gid}.{k}: PHP={type(pv).__name__}({pv!r}) Java={type(jv).__name__}({jv!r})")
- diff_count += 1
- elif isinstance(pv, list):
- if json.dumps(pv, ensure_ascii=False, sort_keys=True) != json.dumps(jv, ensure_ascii=False, sort_keys=True):
- print(f"[值] goods {gid}.{k}:\n PHP ={json.dumps(pv, ensure_ascii=False)[:200]}\n Java={json.dumps(jv, ensure_ascii=False)[:200]}")
- diff_count += 1
- elif pv != jv:
- print(f"[值] goods {gid}.{k}: PHP={pv!r} Java={jv!r}")
- diff_count += 1
- print(f"\n差异总数: {diff_count}")
|