test_translator_failure_semantics.py 872 Bytes
from query.qwen_mt_translate import Translator


class _RecordingRedis:
    def __init__(self):
        self.setex_calls = []

    def setex(self, key, ttl, value):
        self.setex_calls.append((key, ttl, value))


def test_translate_failure_returns_none_and_skips_cache(monkeypatch):
    translator = Translator(model="qwen", api_key="dummy-key", use_cache=False)
    fake_redis = _RecordingRedis()
    translator.use_cache = True
    translator.redis_client = fake_redis
    translator.cache_prefix = "trans"
    translator.expire_seconds = 60

    monkeypatch.setattr(translator, "_translate_qwen", lambda *args, **kwargs: None)

    result = translator.translate(
        text="商品标题",
        target_lang="en",
        source_lang="zh",
        prompt="translate for product search",
    )

    assert result is None
    assert fake_redis.setex_calls == []