运行Django的单元测试:python manage.py test,出错。经查发现某些列的数据是中文,而Django自动创建的测试数据库编码是latin1。需要用数据库的TEST_CHARSET变量来指定测试数据库的编码,设为utf8就可以了。
运行一次完整的测试很慢。用time python manage.py test这里的测试用例大部分都是Django默认的,跑完432个测试总共用了2分7秒,而执行测试的时间只有36秒,大部分时间在创建和销毁数据库了。
Ran 432 tests in 36.068s
FAILED (errors=1, skipped=1)
Destroying test database for alias 'default'...
real 2m7.215s
user 0m25.922s
sys 0m1.028s
如果用SQLite做测试数据库,则完全使用的内存数据库,想必会比MySQL快。按照这个帖子,把测试数据库改为SQLite后,测试速度大大提高,同样的测试只用了18秒,其中16秒都是跑测试的时间。
Ran 432 tests in 15.844s
FAILED (errors=1, skipped=1)
Destroying test database for alias 'default'...
real 0m17.866s
user 0m17.121s
sys 0m0.432s
以后测试就用SQLite了。