问题标签 [django-fixtures]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
142 浏览

django - 从夹具内容中重置表单值

使用 Django 1.5,我的表单需要一个默认值按钮。

表单是 a forms.ModelForm,并且在部署应用程序时使用 Django 固定装置填充模型。基本上,重置按钮将获取夹具内容并使用它更新表单内容。

我必须用os和东西打开夹具文件吗?

0 投票
2 回答
951 浏览

django - 来自导入应用程序的模型的 Django 固定装置(如 django-allauth)

我知道可以创建像这样的夹具文件initial_data.json为我自己的模型创建夹具文件。我想为导入的 django-allauth 应用程序创建和使用的表创建类似的文件。

我试过了:

但是它最终会出现错误:

0 投票
1 回答
1750 浏览

python - Django中的单元测试:如何初始化数据库

我正在尝试使用 Django 进行测试驱动开发。我的问题是在运行测试之前我需要在数据库中添加一些东西,例如一些用户、部门和他们的权限。我尝试使用固定装置来做到这一点,但我真的发现整个过程非常不直观(我还发现当我删除并重新同步我的数据库时,我的用户固定装置被破坏了,因为权限仅通过 id 引用)!

我已经搜索了这个预测试数据库初始化的其他解决方案,但我只能找到在 TestCase 类的 setUp 方法中执行初始化的非常简单的情况。当您的应用程序具有不同的用户和权限并且都需要测试时,我真的不认为可以使用这些方法。

您能告诉我在开始测试大型应用程序之前如何填充数据库吗?除了fixtures和setUp class还有什么更好的方法吗?

0 投票
2 回答
4720 浏览

django - Django manage.py test cannot load fixture properly

I've written Django tests using django.test.TestCase, and I'd like to use a fixture with all of my current database data to run the tests. However, if I create the fixture as follows:

when I then run the tests using python manage.py test myapp, I get the following error:

I read somewhere on SO that this might be caused by a pk conflict so I then tried re-creating the fixture with:

But now running the test gives me:

I've also tried variously excluding (using the --exclude option) auth.permission and contenttypes (or both simultaneously), but then I get complaints about missing permissions (Key (permission_id)=(44) is not present in table "auth_permission".) or missing content types (DeserializationError: ContentType matching query does not exist.)

The thing is, I need permissions anyway because my tests are partly to verify that only users with specific permissions can access certain views.

I don't understand why this is happening, to be honest--my impression was that the test runner starts with a completely clean database and loads EVERYTHING from my fixture, but reading posts like this one: Django unit-testing with loading fixtures for several dependent applications problems makes it seem like maybe that's not the case.

How can I get around this? I'd much rather not have to write stuff like User.objects.create_user(.. tons of times under def setUp(self): in my tests just to have enough objects for them to run properly...

0 投票
1 回答
601 浏览

django - django-dynamic-fixture foreign key to self

I have a tests.py that looks like this:

My Person model looks like this:

When I run the tests, I get the following:

How do I create a django_dynamic_fixture object that has a foreignkey pointing to itself?

0 投票
3 回答
469 浏览

django - 无法在 Django 项目中使用 South 加载固定装置

我有一个 Django 项目,它使用 South 应用程序来处理模式和数据迁移。在我的一个应用程序中,我有迁移(编号 0004),它负责从 json 文件加载数据夹具:

在同一个项目中,我尝试添加需要再添加一个文件的“软删除”功能,定义为:

基于此更改,我添加了编号为 0009 的新迁移。之后,我启动了migrate命令,这给了我错误:

这很奇怪,因为在应用迁移 0004 时发生此错误,该迁移 0004 之前工作正常,并且在此步骤中从 South 进程提交的文件deleted_at不应该也不存在于我的数据库中。我发现从步骤中使用加载夹具移动迁移0009 之后的 0004 解决了问题,但看起来很脏,不是解决此问题的好方法。

你有什么建议我该如何解决这个问题并正确处理 South 的迁移和夹具加载?

0 投票
1 回答
1301 浏览

django - 使用 South / Selenium 进行 Django 测试的装置

我正在尝试在使用 South 的 Django 项目(1.5.4)上运行 Selenium 测试。当我尝试使用固定装置注入初始数据时,我认为 South 与我的测试发生冲突,但我不确定为什么;我很感激任何帮助。

根据 Django文档,应该在第一个 syncdb 之后加载夹具,然后应用所有迁移。

问题 1)这是否考虑到南迁移?我需要以某种方式单独运行它们吗?

运行测试时出现的错误使我的 South 迁移似乎在第一次测试后仍然存在于测试数据库中......但我认为每个测试都有自己的数据库(和迁移/固定装置)创建?第一个测试通过/失败,但每个后续测试都会引发此 IntegrityError:

这个South 文档SO question似乎表明我需要重写某种类型的forwards方法才能使夹具工作,但我不完全确定如何将其应用于测试情况而不是生产(或者如果那是我需要的解决方案)。

问题 2)我应该在我的测试设置中覆盖转发吗?我会在哪里做?

我的相关测试代码:

谢谢!


更新

所以根据 Alex 下面的建议和这个 South doc,我将这一行添加到我的 settings.py 中:

但是我现在得到了 8 个错误中的 8 个(在我在第一次测试中得到 1 个通过/失败,然后是 7 个错误之前)。单个测试的完整错误如下:

我运行的命令:

我不太确定我是否使问题变得更好、更糟或相同,但我似乎更符合文档...

谢谢!


更新#2——有解决方案

因此,还有其他几页帮助我弄清楚了(除了 Alex 指向 South doc 的指针)。首先,这个人有一个类似的问题,并使用 SOUTH_TESTS_MIGRATE = False 语句解决了它。所以我的一半解决方案是包含它。

我解决方案的后半部分是修复我的夹具文档。我将所有东西都倾倒在我的固定装置中:

显然,用 South 固定它是一种不好的方法——因为它还将 South 迁移表转储到固定装置中。上面的帖子展示了博主使用特定于应用程序的装置(在这篇 SO 帖子中也谈到了),这是让我的装置工作的关键。固定装置上的 Django 文档确实显示了仅转储应用程序的可选参数,但我不知道忽略它们会导致 South 发生冲突。因此,我解决方案的后半部分是创建特定于应用程序的夹具:

我的测试现在运行良好(缓慢,但可能是不同的问题)!

0 投票
0 回答
537 浏览

django - 加载 django 设备时出错

我有两组固定装置,Person.json 和 Movies.json。Person 夹具基本上有这种格式:

我先加载它,没问题。我的 movie.json 看起来像这样:

并加载电影夹具给我这个错误:

我的模型是:

我过去加载了类似的模型和固定装置,但我正在尝试重构我的一些代码,所以现在它不起作用。我所做的显着更改之一是我使用的是 PostgreSQL 而不是 MySQL,并且我在 virtualenv 中运行所有东西。有没有办法查明错误发生在夹具的哪个位置?

0 投票
3 回答
3312 浏览

django - Django 夹具加载非常慢

我正在尝试使用 2 组夹具提供初始数据。第一个夹具格式如下所示。

我先加载它,它在大约 1-2 小时内加载良好。我的 movie.json 格式如下所示:

并且加载电影固定装置花费了很长时间,目前是 20 小时,而且我的电脑在运行时速度很慢。我在 2 个月前加载了类似的装置,除了我使用 MySQL(我现在正在使用 Postgres)并且我在我的模型中添加了日期字段。过去将电影设备加载到我的旧 MySQL 数据库时,只需要 2-3 个小时。有没有办法确定夹具加载部分在哪一步或是否已冻结?

作为参考,我的模型是:

0 投票
3 回答
1638 浏览

django - 测试 Django 时无法加载夹具

我希望不要通过重新提出这个问题来自欺欺人,但我就是想不通为什么我的固定装置在运行测试时没有加载。我正在使用 python 2.7.5 和 Django 1.5.3。

我可以加载我的固定装置python manage.py testserver test_winning_answers,位置为survey/fixtures/test_winning_answers.json.

我的测试类正在执行正确的导入:

但是当尝试运行测试命令时,它找不到它们:

我怀疑我遗漏了一些明显的东西,但无法弄清楚......任何建议都将不胜感激。谢谢!