-
Notifications
You must be signed in to change notification settings - Fork 0
/
conftest.py
64 lines (44 loc) · 1.74 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import pytest
from xsdata.formats.dataclass.context import XmlContext
from xsdata.formats.dataclass.parsers import JsonParser
from xsdata.formats.dataclass.parsers import XmlParser
from xsdata.formats.dataclass.serializers import JsonSerializer
from xsdata.formats.dataclass.serializers import PycodeSerializer
from xsdata.formats.dataclass.serializers import XmlSerializer
from xsdata.formats.dataclass.serializers.config import SerializerConfig
from xsdata.formats.dataclass.serializers import TreeSerializer
def pytest_addoption(parser):
parser.addoption(
"--output-format",
action="store",
default="dataclasses",
choices=["dataclasses", "attrs", "pydantic"],
help="Class type format",
)
@pytest.fixture
def output_format(request):
return request.config.getoption("--output-format")
@pytest.fixture
def xml_context(output_format):
return XmlContext(class_type=output_format)
@pytest.fixture
def serializer_config():
return SerializerConfig(indent=" ", ignore_default_attributes=True)
@pytest.fixture
def xml_parser(xml_context):
return XmlParser(context=xml_context)
@pytest.fixture
def xml_serializer(xml_context, serializer_config):
return XmlSerializer(context=xml_context, config=serializer_config)
@pytest.fixture
def code_serializer(xml_context, serializer_config):
return PycodeSerializer(context=xml_context)
@pytest.fixture
def json_parser(xml_context):
return JsonParser(context=xml_context)
@pytest.fixture
def json_serializer(xml_context, serializer_config):
return JsonSerializer(context=xml_context, config=serializer_config)
@pytest.fixture
def tree_serializer(xml_context, serializer_config):
return TreeSerializer(context=xml_context, config=serializer_config)