django测试无法将灯具数据插入mysql

时间:2012-09-05 15:26:27

标签: python mysql django django-models

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

从django的详细输出中,它说它已经从灯具装载了很多物品。但是,测试数据库中的表仍然是空的。我在测试代码中设置了断点,然后检查测试数据库的表。我甚至调试了django代码,它确实执行了insert sql并返回受影响的行。但是我仍然无法在测试数据库中找到数据!

数据库服务器是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,此fixture中的数据可以插入到测试数据库中。我不知道为什么django在运行测试用例之前没有插入灯具,但是这是让我的工作继续进行的解决方法。

解决方法

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

1 个答案:

答案 0 :(得分:0)

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

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

(可悲的是,这不是我自己问题的原因。)