from translation.backends.qwen_mt import QwenMTTranslationBackend 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 = QwenMTTranslationBackend( capability_name="qwen-mt", model="qwen-mt-flash", base_url="https://dashscope-us.aliyuncs.com/compatible-mode/v1", 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", scene="sku_name", ) assert result is None assert fake_redis.setex_calls == []