Spaces:
Paused
Paused
File size: 3,897 Bytes
1cf642c 95d826d 1cf642c 537f2d3 95d826d 1cf642c 30a1cb5 95d826d 1cf642c 537f2d3 1cf642c 537f2d3 1cf642c 537f2d3 1cf642c 30a1cb5 34fde90 95d826d 1cf642c 30a1cb5 55a98ca 3fbf837 34fde90 1cf642c 30a1cb5 1cf642c 34fde90 1cf642c 30a1cb5 1cf642c d70d9a3 1cf642c 30a1cb5 d70d9a3 1cf642c 30a1cb5 34fde90 d70d9a3 34fde90 30a1cb5 d70d9a3 3fbf837 1cf642c 95d826d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
import os
import json
import requests
from log import log
BASE_URL = os.environ.get("BASE_URL", "http://localhost:7860")
SERVICE_CONFIG_PATH = os.environ.get("SERVICE_CONFIG_PATH", "service_config.json")
with open(SERVICE_CONFIG_PATH, "r", encoding="utf-8") as f:
service_config = json.load(f)
fallback_answers = service_config["projects"]["project1"]["llm"]["fallback_answers"]
currency_options = service_config["config"]["data_formats"]["currency_format"]["valid_options"]
city_options = service_config["config"]["data_formats"]["city_format"]["valid_options"]
test_results = []
def assert_test(name, actual, expected_substring, explanation=None):
if explanation:
log(f"🧪 TEST: {name} → {explanation}")
actual_str = str(actual)
passed = expected_substring in actual_str
if passed:
log(f"[TEST] {name:<45} ✅")
test_results.append((name, True))
else:
log(f"[TEST] {name:<45} ❌ — Beklenen: {expected_substring}, Gelen: {actual_str[:100]}...")
test_results.append((name, False))
def summarize_tests():
total = len(test_results)
success = sum(1 for _, ok in test_results if ok)
fail = total - success
log("🧾 TEST SONUCU ÖZETİ")
log(f"🔢 Toplam Test : {total}")
log(f"✅ Başarılı : {success}")
log(f"❌ Başarısız : {fail}")
def run_all_tests():
try:
log("🚀 Test süreci başlatıldı.")
response = requests.post(f"{BASE_URL}/start_chat?project_name=project1")
if response.status_code != 200:
raise Exception(f"Start chat başarısız: {response.status_code}, {response.text}")
session_id = response.json().get("session_id")
if not session_id:
raise Exception("Session ID alınamadı.")
headers = {"X-Session-ID": session_id}
# === Test 1: LLM fallback
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "Mars'a bilet alabilir miyim?"}, headers=headers)
assert_test("LLM fallback", r.json(), "")
# === Test 2: Döviz kuru — başarılı
valid_currency = currency_options[0]
r = requests.post(f"{BASE_URL}/chat", json={"user_input": f"{valid_currency} kuru nedir"}, headers=headers)
assert_test("Parametre tamamlandı — dolar", r.json(), f"{valid_currency} kuru şu an")
# === Test 3: Döviz kuru — geçersiz parametre
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "yenidolar kuru nedir"}, headers=headers)
assert_test("Geçersiz parametre — currency", r.json(), "Geçerli bir döviz cinsi")
# === Test 4: Yol durumu — eksik parametreleri isteme
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "yol durumu"}, headers=headers)
assert_test("Eksik parametre — from_location & to_location", r.json(), "Lütfen şu bilgileri sırayla belirtir misiniz")
# === Test 4b: Yol durumu — eksik parametreleri tamamlama ve doğrulama
r = requests.post(f"{BASE_URL}/chat", json={"user_input": f"{city_options[0]} {city_options[1]}"}, headers=headers)
assert_test("Parametre tamamlandı — yol durumu", r.json(), "trafik açık")
# === Test 5: Hava durumu — eksik parametre isteme
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "hava durumu"}, headers=headers)
assert_test("Eksik parametre — city", r.json(), "Lütfen şu bilgileri sırayla belirtir misiniz")
# === Test 5b: Hava durumu — parametre tamamlama ve doğrulama
r = requests.post(f"{BASE_URL}/chat", json={"user_input": f"{city_options[0]}"}, headers=headers)
assert_test("Parametre tamamlandı — hava durumu", r.json(), f"{city_options[0]} için hava güneşli")
summarize_tests()
except Exception as e:
log(f"❌ run_all_tests sırasında hata oluştu: {e}")
|