flare / intent_test_runner.py
ciyidogan's picture
Upload 15 files
16134a9 verified
raw
history blame
3.19 kB
import os
import requests
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 run_all_tests():
try:
log("🚀 Test süreci başlatıldı.")
response = requests.post(f"{BASE_URL}/start_chat?project_name=project1")
session_id = response.json().get("session_id")
headers = {"X-Session-ID": session_id}
# 1. LLM fallback testi (intent bulunamadığında)
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "bilinmeyen bir soru"}, headers=headers)
assert_test("LLM fallback", r.json(), "maalesef")
# 2. Eksik parametre testi (döviz 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")
# 3. Eksik parametre tamamlanınca tekrar deneme
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "dolar"}, headers=headers)
assert_test("Parametre tamamlandı — dolar", r.json(), "dolar kuru şu an")
# 4. Geçersiz parametre validasyonu
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")
# 5. 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(), "maalesef")
# 6. Yol durumu testi (iki parametre eksik veya biri eksik)
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "yol durumu"}, headers=headers)
assert_test("Eksik parametre — from_location", r.json(), "Lütfen from_location")
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "Ankara"}, headers=headers)
assert_test("Eksik parametre — to_location", r.json(), "Lütfen to_location")
r = requests.post(f"{BASE_URL}/chat", json={"user_input": "İstanbul"}, headers=headers)
assert_test("Parametre tamamlandı — yol durumu", r.json(), "trafik açık")
summarize_tests()
except Exception as e:
log(f"❌ run_all_tests sırasında hata oluştu: {e}")