import pytest from utils.registry import Registry def test_register_and_build(): registry = Registry("demo") @registry.register("adder") class Adder: def __init__(self, base: int = 0): self.base = base assert "adder" in registry assert len(registry) == 1 assert registry.build({"name": "adder", "base": 3}).base == 3 assert registry.build({"name": "adder"}, base=5).base == 5 def test_duplicate_and_missing(): registry = Registry("demo") registry.register("x")(lambda: None) with pytest.raises(KeyError): registry.register("x")(lambda: None) with pytest.raises(KeyError, match="找不到"): registry.get("y") with pytest.raises(KeyError): registry.build({"base": 1})