5

我正在使用“manage.py test”以及使用“dumpdata”创建的 JSON 夹具

我的问题是夹具中的几个表非常大(例如,一个包含美国所有城市的名称),这使得运行测试非常慢。

由于程序从未修改过其中的几个表(例如 - 永远不需要修改城市名称),因此为每次测试运行创建和拆除这些表没有多大意义。

有没有更好的方法来使用这种数据测试这段代码?

4

2 回答 2

2

这是我的解决方案:

class xxxx(TestCase):
    def setUp(self):
        import _mysql
        db=_mysql.connect('xxxx', 'xxxx', 'xxxx', "test_xxxxxxx")
        db.query(open('sql/xxxxxx.sql').read())

sql 文件是我使用 phpMyAdmin 导出的插入语句序列。读取 sql 语句比导入 JSON 或 YAML 固定装置快得多。这肯定不是最优雅的解决方案,但它确实有效。

根据在运行 Django 测试之前加载 SQL 转储中的第三个答案,您只需要将这个 sql 文件放在 app 目录内的 'sql' 目录中。这对我在执行“manage.py syncdb”时对生产数据库有用,但由于某种原因,在执行“manage.py test”时这些数据实际上并未导入到测试数据库中,即使“安装自定义 SQL xxxx.xxxx 模型'出现在输出中。所以,我在 setUp() 中编写了自己的代码

于 2010-05-29T03:49:03.133 回答
1

你应该检查鼻子框架。看起来您可以更好地控制何时加载测试夹具和何时撕毁:

"nose supports fixtures at the package, module, class, and test case level, so expensive initialization can be done as infrequently as possible. See Fixtures for more."

此外,看起来鼻子有 django 插件:在谷歌上

希望它会有所帮助。

于 2010-05-18T08:25:25.220 回答