【问题标题】:django test failed inserting data of fixtures into mysqldjango 测试将灯具数据插入 mysql 失败
【发布时间】:2012-09-05 15:26:27
【问题描述】:

我想在运行测试用例之前将测试数据插入数据库。

从 django 的详细输出中,它说它已经从固定装置加载了很多对象。但是测试数据库中的表仍然是空的。我在我的测试代码中设置断点,然后检查测试数据库的表。我什至调试了 django 代码,它确实执行了插入 sql 并返回了受影响的行。但是我还是找不到test db中的数据!

数据库服务器是mysql。

有解决办法吗?

django 测试的详细输出

...
Loading 'goods_756399566_3my10' fixtures...
...
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.xml.zip fixture 'goods_756399566_3my10'...
No xml fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.xml.bz2 fixture 'goods_756399566_3my10'...
No xml fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json fixture 'goods_756399566_3my10'...
Installing json fixture 'goods_756399566_3my10' from '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json.gz fixture 'goods_756399566_3my10'...
No json fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json.zip fixture 'goods_756399566_3my10'...
...
Installed 117 object(s) from 2 fixture(s)

更新

我尝试转储与 initial_data.json 相同的数据,这个夹具中的数据可以插入到测试数据库中。我不知道为什么 django 在运行测试用例之前未能插入固定装置,但这是让我的工作继续进行的一种解决方法。

解决方法

我不确定这是我的环境造成的。无论如何我在做测试时将数据库更改为SQLLite,将夹具数据导入内存数据库没有问题。在没有安装 mysql 的情况下运行单元测试也是有意义的。

【问题讨论】:

  • 似乎是在给定文件夹中找不到文件goods_756399566....。检查路径?
  • @will-hart,下面的输出表明它已找到并安装。 Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json fixture 'goods_756399566_3my10'... Installing json fixture 'goods_756399566_3my10' from '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
  • 很公平,我只是在看这条线:No xml fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.

标签: python mysql django django-models


【解决方案1】:

这已经很晚了,但是,我在研究自己的类似问题时发现了这个问题。答案是,每个 Django 测试都包装在一个事务中,所以如果你跳到其他程序来检查数据库,这就是你看不到它的原因。

这个问题指向相关文档:Django Rest Framework testing save POST request data

(遗憾的是,这不是我自己问题的原因。)

【讨论】:

    猜你喜欢
    • 2018-08-20
    • 2018-11-12
    • 2012-04-20
    • 2017-10-02
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多