示例#1
0
    def test_custom_converter_hooks_dataclasses(self, session):
        @dataclass
        class Data:
            test: datetime.datetime

        @dataclass
        class ResData:
            json: Data

        conv = DataclassConverter()
        req_hook = request_dataclass_converter_hook(conv)
        res_hook = response_dataclass_converter_hook(conv)
        session.add_hook(req_hook)
        session.add_hook(res_hook)
        with pytest.raises(TypeError):
            session.post(
                "http://httpbin.org/post", data=Data(datetime.datetime.now())
            )
        with pytest.raises(ValueError):
            session.post(
                "http://httpbin.org/post", json={"test": "22:13:44"}
            ).structure(ResData)
        conv.register_hooks(
            datetime.datetime,
            lambda obj, _: datetime.datetime.strptime(obj, "%H:%M:%S"),
            lambda obj: obj.strftime("%H:%M:%S"),
        )
        res = session.post(
            "http://httpbin.org/post", data=Data(datetime.datetime.now())
        ).structure(ResData)
        assert res.data.json.test
示例#2
0
 def test_response_converter_incorrect_dataclass_type(self, session):
     session.add_hook(ResponseDataclassConverterHook)
     res = session.post("http://httpbin.org/post")
     with pytest.raises(TypeError):
         res.structure(ExampleDataclass)
示例#3
0
 def test_response_converter_correct_dataclass_type(self, session):
     session.add_hook(ResponseDataclassConverterHook)
     res = session.post("http://httpbin.org/post")
     res.structure(ExampleResponseDataclass)
     assert isinstance(res.data, ExampleResponseDataclass)