Spaces:
Running
Running
File size: 6,245 Bytes
4b9f7d2 bb20239 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 8be9d0b 4b9f7d2 |
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
import os, requests, time
from log import log
BASE_URL = "http://localhost:7860"
MOCK_BASE = os.getenv("MOCK_BASE_URL") # Örnek: https://abc123.ngrok.io
test_results = []
def assert_test(name, actual, expected_substring, explanation=None):
if explanation:
log(f"🧪 TEST: {name} → {explanation}")
actual_str = str(actual)
if expected_substring in actual_str:
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 wait_for_intent_training(timeout_sec=60):
log("⏳ Intent eğitimi tamamlanıyor mu kontrol ediliyor...")
for _ in range(timeout_sec // 3):
logs = open("/tmp/logs.txt").read() if os.path.exists("/tmp/logs.txt") else ""
if "✅ Intent eğitimi tamamlandı" in logs:
return True
time.sleep(3)
return False
def run_all_tests():
try:
log("🚀 Test süreci başlatıldı.")
session_id = requests.post(f"{BASE_URL}/start_chat").json().get("session_id")
headers = {"X-Session-ID": session_id}
# 1. LLM fallback testi
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "zzzzzzzzzzzzz"}, headers=headers)
assert_test("LLM fallback", r.json(), "Bu konuda maalesef")
# 2. Intent eğitimi (doviz + yol intentleri)
intents = {
"intents": [
{
"name": "doviz-kuru",
"examples": ["dolar kuru nedir", "euro kuru nedir"],
"variables": ["currency:{dolar} kuru nedir", "currency:{euro} kuru nedir"],
"variable_formats": {"currency": "currency_format"},
"action": {
"url": f"{MOCK_BASE}/doviz",
"method": "POST",
"headers": [{"key": "Authorization", "value": "Bearer {auth_tokens.doviz-kuru.token}"}],
"body": {"currency": "{variables.currency}"},
"auth": {
"auth_endpoint": f"{MOCK_BASE}/auth",
"auth_body": {"username": "user", "password": "pass"},
"auth_token_path": "token",
"auth_refresh_endpoint": f"{MOCK_BASE}/refresh",
"refresh_body": {"refresh_token": "{auth_tokens.doviz-kuru.refresh_token}"}
},
"response_parser": {"field": "rate"},
"reply_template": "{variables.currency} kuru şu an {rate} TL."
}
},
{
"name": "yol-durumu",
"examples": ["Ankara'dan İstanbul'a yol durumu"],
"variables": ["from_location:{Ankara} to_location:{İstanbul} yol durumu"],
"action": {
"url": f"{MOCK_BASE}/yol",
"method": "POST",
"headers": [{"key": "Authorization", "value": "Bearer {auth_tokens.yol-durumu.token}"}],
"body": {
"from_location": "{variables.from_location}",
"to_location": "{variables.to_location}"
},
"auth": {
"auth_endpoint": f"{MOCK_BASE}/auth",
"auth_body": {"username": "user", "password": "pass"},
"auth_token_path": "token",
"auth_refresh_endpoint": f"{MOCK_BASE}/refresh",
"refresh_body": {"refresh_token": "{auth_tokens.yol-durumu.refresh_token}"}
},
"response_parser": {"field": "status"},
"reply_template": "{status}"
}
}
]
}
requests.post(f"{BASE_URL}/train_intents", json=intents)
if not wait_for_intent_training():
assert_test("Intent eğitimi zamanında tamamlandı", "False", "True")
summarize_tests()
return
r = requests.post(f"{BASE_URL}/load_intent_model")
assert_test("Intent modeli yüklendi", r.json(), "ok")
# 3. Eksik parametre — doviz-kuru
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "döviz kuru nedir"}, headers=headers)
assert_test("Eksik parametre — currency", r.json(), "Lütfen currency")
# 4. Parametre tamamlandı — euro
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "euro"}, headers=headers)
assert_test("Parametre tamamlandı — euro", r.json(), "euro kuru şu an")
# 5. Geçersiz parametre — currency
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")
# 6. Eksik parametre — yol durumu
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "Ankara'dan yol durumu"}, headers=headers)
assert_test("Eksik parametre — to_location", r.json(), "Lütfen to_location")
# 7. Parametre tamamlandı — yol
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "İstanbul"}, headers=headers)
assert_test("Parametre tamamlandı — yol durumu", r.json(), "trafik açık")
# 8. Konu değişikliği → awaiting reset
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "hava nasıl"}, headers=headers)
assert_test("Konu değişikliği sonrası fallback", r.json(), "Bu konuda maalesef")
summarize_tests()
except Exception as e:
log(f"❌ run_all_tests sırasında hata oluştu: {e}")
|