【问题标题】:Django JSON fixture generationDjango JSON 夹具生成
【发布时间】:2011-01-02 06:57:50
【问题描述】:

我是来自 Rails 的 Django 新手,我发现 Django 固定装置(最常见的是我收集的 JSON)有点尴尬和笨拙,至少与我熟悉的 rails 固定装置相比.我喜欢能够嵌入一些 ruby​​ 代码,例如 <%= Time.now %>,或者在将事物与外键关联时按名称引用其他固定装置(以避免必须跟踪 id)。

所以问题是,您如何更有经验 Django 开发人员构建您的设备。您是坐下来手动编写 JSON/XML/YAML,还是有其他可用的工具来帮助类似于 rails 给我的帮助?还是在 ./manage.py shell 中创建一些数据并将该数据转储到夹具中最简单,而不是手动编写夹具?甚至,您是否发现自己在测试类的 setUp(self) 方法中放入了大量数据。有了更多的经验,也许用手把这些东西写出来就不会那么乏味了?

【问题讨论】:

  • 如果你安装了 PyYAML(我认为应该在 stdlib 中),你可以在 YAML 中编写固定装置,这更令人愉快。

标签: django unit-testing fixtures


【解决方案1】:

项目中所有数据的简单数据转储到Json夹具

python manage.py dumpdata --format=json myapp > /path/to/myapp/fixtures/initial_data.json

然后在tests.py 中添加这个以包含固定装置:

class ViewTests(TestCase):

    # load fixtures
    fixtures = ['data2.json']

        def setUp(self):
        # continue remainder of test code

【讨论】:

    【解决方案2】:

    查看django-dilla。它为您的模型甚至图像生成随机数据。无需繁琐的手动将数据输入到管理员中进行测试。

    【讨论】:

      【解决方案3】:

      Django 的管理站点非常适合快速输入虚拟数据或初始数据。然后,您可以将其转储到 json 文件(或任何格式)。

      http://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-appname-appname-appname-model

      django-admin.py dumpdata | pbcopy 会将所有 json 格式的数据转储到剪贴板。

      转储内容类型和身份验证表时要小心,因为这可能会在将夹具重新加载到数据库时导致问题。

      【讨论】:

      • pbcopy 和 pbpaste 我认为是 mac 特定的。在linux中它是xsel。 whereswalden.com/2009/10/23/pbcopy-and-pbpaste-for-linux
      • 不知道!感谢您的提示。
      • --natural 标志与转储数据一起使用。如果可能,它将使用自然键而不是主 ID。如果您与 ContentTypes 模型有关系,这一点尤其重要。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 2019-05-06
      • 2012-11-08
      • 1970-01-01
      相关资源
      最近更新 更多