import requests import json BASE_URL = "http://localhost:8000" def test_api(name, method, path, params=None, data=None, expected_status=None): url = f"{BASE_URL}{path}" try: if method == "GET": r = requests.get(url, params=params, timeout=10) else: r = requests.post(url, json=data, timeout=10) status = r.status_code try: body = r.json() except: body = r.text[:200] ok = "✅" if expected_status is None or status == expected_status else "❌" print(f"{ok} {name}: {status}") if status != 200: print(f" Response: {body}") return status == 200 if expected_status is None else status == expected_status except Exception as e: print(f"❌ {name}: Error - {e}") return False print("=" * 60) print("API 接口测试报告") print("=" * 60) results = [] # 1. 空气质量API print("\n--- 空气质量API ---") results.append(test_api("空气质量(GET)", "GET", "/api/air-quality/", params={"city": "北京"})) results.append(test_api("空气质量(POST)", "POST", "/api/air-quality/", data={"city": "上海"})) results.append(test_api("空气质量(缺少参数)", "GET", "/api/air-quality/", expected_status=400)) # 2. IP定位API print("\n--- IP定位API ---") results.append(test_api("IP定位", "GET", "/api/getIpData/")) # 3. 百度翻译API print("\n--- 百度翻译API ---") results.append(test_api("百度翻译(语言列表)", "GET", "/api/baiduFanyi/getAllLangType/")) results.append(test_api("百度翻译(自动检测)", "GET", "/api/baiduFanyi/getAutoLangType/")) # 4. 天气API print("\n--- 天气API ---") results.append(test_api("天气查询", "GET", "/api/weather/", params={"city": "北京"})) # 5. 汇率API print("\n--- 汇率API ---") results.append(test_api("汇率(最新)", "GET", "/api/currency/rates/")) results.append(test_api("汇率(货币列表)", "GET", "/api/currency/currencies/")) # 6. 短链接API print("\n--- 短链接API ---") results.append(test_api("短链接(创建)", "POST", "/api/shorturl/shorten/", data={"url": "https://example.com"})) # 7. 验证码API print("\n--- 验证码API ---") results.append(test_api("滑块验证码(生成)", "GET", "/api/captcha/generate/")) results.append(test_api("图片验证码", "GET", "/api/image-captcha/")) # 8. API接口大全 print("\n--- API接口大全 ---") results.append(test_api("API分类列表", "GET", "/api/apidirectory/categories/")) results.append(test_api("API项目列表", "GET", "/api/apidirectory/items/")) # 9. 工具API print("\n--- 工具API ---") results.append(test_api("工具分类列表", "GET", "/api/tool/categories/")) results.append(test_api("工具列表", "GET", "/api/tool/list/")) # 10. 用户API print("\n--- 用户API ---") results.append(test_api("用户注册", "POST", "/user/login-register/", data={ "username": "test_api_user", "email": "test_api@example.com", "password": "Test123456" })) results.append(test_api("用户登录", "POST", "/user/login/", data={ "account": "test_api_user", "password": "Test123456" })) # 11. 签到API print("\n--- 签到API ---") results.append(test_api("签到状态", "GET", "/user/wallet/checkin/status/")) print("\n" + "=" * 60) print(f"测试结果: {sum(results)}/{len(results)} 通过") print("=" * 60)