停止混合器库自动生成相关模型

2024-06-16 09:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写一个测试夹具,使用pytest+SQLAlchemy,并使用mixer生成数据。然而,mixer为我创建的所有模型生成关系,即使我想显式地创建每个记录

我的代码如下所示:

@pytest.fixture()
def filter_test_reports(mix, filter_test_types, db):
    types = filter_test_types

    a = db.session.query(models.Report).count()
    # This sets a to 0

    ret = [
        mix.blend(
            models.Report,
            created_at=datetime.datetime.now() - datetime.timedelta(days=1),
            samples=[
                mix.blend(models.Sample, data=[
                    mix.blend(models.SampleData, type=types[0], value=1),
                    mix.blend(models.SampleData, type=types[1], value=1),
                ])
            ],
            meta=[
                mix.blend(models.ReportMeta, report_meta_key='key_1', report_meta_value='1'),
                mix.blend(models.ReportMeta, report_meta_key='key_2', report_meta_value=1),
            ]
        ),
        mix.blend(
            models.Report,
            created_at=datetime.datetime.now() - datetime.timedelta(days=2),
            samples=[
                mix.blend(models.Sample, data=[
                    mix.blend(models.SampleData, type=types[0], value=2),
                    mix.blend(models.SampleData, type=types[1], value=2),
                ])
            ],
            meta=[
                mix.blend(models.ReportMeta, report_meta_key='key_1', report_meta_value='2'),
                mix.blend(models.ReportMeta, report_meta_key='key_2', report_meta_value=2),
            ]
        ),
        mix.blend(
            models.Report,
            created_at=datetime.datetime.now() - datetime.timedelta(days=3),
            samples=[
                mix.blend(models.Sample, data=[
                    mix.blend(models.SampleData, type=types[0], value='3'),
                    mix.blend(models.SampleData, type=types[1], value=3),
                ])
            ],
            meta=[
                mix.blend(models.ReportMeta, report_meta_key='key_1', report_meta_value=3),
                mix.blend(models.ReportMeta, report_meta_key='key_2', report_meta_value=3),
            ]
        )
    ]

    b = db.session.query(models.Report).count()
    # This sets b to 18

看到了吗,即使我只有blend()3 Report个模型,但由于混音器,我最终得到了18个吗?我怎样才能防止这种情况?我只想在我的固定装置的3份报告


Tags: keytestreportdatetimevaluemodelstypefilter