我试图使用Factory Boy为我的测试套件生成测试数据。我的数据由包含转义JSON字符串的body
字段的JSON对象组成(下面的示例)。我还为这个示例数据提供了示例python数据类和工厂男孩工厂
注意:在这个例子中,为了简化问题,我跳过了使用Faker或内置模糊器设置假数据的过程。在更现实的用例中,像eventtime
、deviceid
、enqueuedTime
这样的字段将包含rondomized值(使用固定的随机种子)
我正在努力找出如何生成内部JSON对象并使用Factory Boy将其字符串化
示例数据点:
{
"body": "{\"eventdata\":{\"count\":\"1\",\"sourceid\":\"0\",\"updatetime\":\"1579797993879\",\"description\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit\"},\"eventtime\":\"2020-01-23T16:46:35.522Z\",\"eventversion\":\"1.0.0\",\"eventtype\":\"FooEventType\",\"deviceid\":\"000000123ABC\"}",
"partition": "30",
"enqueuedTime": "2020-01-23T16:46:35.594Z",
"event_type": "FooEventType",
"year": 2020,
"month": 1,
"day": 23}
我的Python数据类和工厂男孩工厂:
from dataclasses import dataclass
import factory
@dataclass
class Root:
body: str
partition: str
enqueued_time: str
event_type: str
year: int
month: int
day: int
@dataclass
class Eventdata:
count: str
sourceid: str
updatetime: str
description: str
@dataclass
class Body:
eventdata: Eventdata
eventtime: str
eventversion: str
eventtype: str
deviceid: str
class EventdataFactory(factory.Factory):
class Meta:
model = Eventdata
count = "1"
sourceid = "0"
updatetime = "1579797993879"
description = "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
class BodyFactory(factory.Factory):
class Meta:
model = Body
eventdata = factory.SubFactory(Eventdata)
eventtime = "2020-01-23T16:46:35.522Z"
eventversion = "1.0.0"
eventtype = "FooEventType" # Note: It is the same in Root
deviceid = "000000123ABC"
class RootFactory(factory.Factory):
class Meta:
model = Root
body = "Escaped JSON String" # Need help here
partition = "30"
enqueuedTime = "2020-01-23T16:46:35.594Z"
event_type = "FooEventType" # Note: It is the same in Body
year = 2020
month = 1
day = 23
如何从“BodyFactory”为“RootFactory”中的body
字段创建转义JSON字符串生成
您可以使用^{} 声明“结构化”主体,使用^{} 将其转换为JSON:
在这个模型中,原始的“Body”对象被构建为
SubFactory
(在class Params
)对象,但仅在工厂求值期间可用:body_raw
不会被传递给数据类构造函数。 然后body
字段通过将内容编码为JSON或任何其他用于将Body
对象转换为JSON的自定义方法来构建注意:我还使用了^{} 将
event_type
从BodyFactory
复制到RootFactory
相关问题 更多 >
编程相关推荐