mirror of
https://github.com/microsoft/SkillOpt.git
synced 2026-07-03 14:02:58 +08:00
Add WebUI env preflight tests
This commit is contained in:
89
tests/test_webui_env_preflight.py
Normal file
89
tests/test_webui_env_preflight.py
Normal file
@@ -0,0 +1,89 @@
|
||||
import pytest
|
||||
import yaml
|
||||
|
||||
pytest.importorskip("gradio")
|
||||
|
||||
from skillopt_webui import app as webui_app
|
||||
|
||||
|
||||
def _write_config(tmp_path, model):
|
||||
config_path = tmp_path / "config.yaml"
|
||||
config_path.write_text(
|
||||
yaml.safe_dump({
|
||||
"model": model,
|
||||
"env": {"name": "searchqa"},
|
||||
}),
|
||||
encoding="utf-8",
|
||||
)
|
||||
return str(config_path)
|
||||
|
||||
|
||||
def test_build_training_env_loads_project_dotenv(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(webui_app, "PROJECT_ROOT", tmp_path)
|
||||
(tmp_path / ".env").write_text(
|
||||
"\n".join([
|
||||
"export QWEN_CHAT_BASE_URL=http://qwen.example/v1",
|
||||
"QWEN_CHAT_MODEL=test-model",
|
||||
"QWEN_CHAT_API_KEY='secret-value'",
|
||||
]),
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
env = webui_app.build_training_env()
|
||||
|
||||
assert env["QWEN_CHAT_BASE_URL"] == "http://qwen.example/v1"
|
||||
assert env["QWEN_CHAT_MODEL"] == "test-model"
|
||||
assert env["QWEN_CHAT_API_KEY"] == "secret-value"
|
||||
|
||||
|
||||
def test_preflight_reports_missing_openai_chat_endpoint(tmp_path, monkeypatch):
|
||||
monkeypatch.delenv("AZURE_OPENAI_ENDPOINT", raising=False)
|
||||
monkeypatch.delenv("OPTIMIZER_AZURE_OPENAI_ENDPOINT", raising=False)
|
||||
monkeypatch.delenv("TARGET_AZURE_OPENAI_ENDPOINT", raising=False)
|
||||
config_path = _write_config(
|
||||
tmp_path,
|
||||
{
|
||||
"backend": "qwen",
|
||||
"optimizer_backend": "openai_chat",
|
||||
"target_backend": "openai_chat",
|
||||
},
|
||||
)
|
||||
|
||||
error = webui_app.validate_training_config(config_path, {})
|
||||
|
||||
assert "missing Azure/OpenAI-compatible endpoint for optimizer, target" in error
|
||||
assert "model.backend is qwen" in error
|
||||
|
||||
|
||||
def test_preflight_reports_unreachable_qwen_endpoint(tmp_path, monkeypatch):
|
||||
monkeypatch.setattr(webui_app, "_can_connect_to_url", lambda _url: False)
|
||||
config_path = _write_config(
|
||||
tmp_path,
|
||||
{
|
||||
"backend": "qwen",
|
||||
"optimizer_backend": "qwen_chat",
|
||||
"target_backend": "qwen_chat",
|
||||
"qwen_chat_base_url": "http://127.0.0.1:9/v1",
|
||||
},
|
||||
)
|
||||
|
||||
error = webui_app.validate_training_config(config_path, {})
|
||||
|
||||
assert "cannot connect to qwen_chat endpoint" in error
|
||||
assert "127.0.0.1:9" in error
|
||||
|
||||
|
||||
def test_preflight_accepts_reachable_qwen_endpoint(tmp_path, monkeypatch):
|
||||
seen_urls = []
|
||||
monkeypatch.setattr(webui_app, "_can_connect_to_url", lambda url: seen_urls.append(url) or True)
|
||||
config_path = _write_config(
|
||||
tmp_path,
|
||||
{
|
||||
"optimizer_backend": "qwen_chat",
|
||||
"target_backend": "qwen_chat",
|
||||
"qwen_chat_base_url": "http://qwen.example/v1",
|
||||
},
|
||||
)
|
||||
|
||||
assert webui_app.validate_training_config(config_path, {}) is None
|
||||
assert seen_urls == ["http://qwen.example/v1", "http://qwen.example/v1"]
|
||||
Reference in New Issue
Block a user