我有一个webapp,它有很多大的计算逻辑。为了稳定它,并花更少的时间来回归测试,我决定在Django上创建一些单元测试用例。我的目的-不要为每个运行的测试用例创建新的测试数据库(我使用Postgre SQL,这很重要),并在测试用例完成后保存所有测试数据的数据库。我需要测试数据来分析和搜索bug。
我创建了自定义TestRunner,它继承了DiscoverRunner,但更改了一些参数:keepdb = True debug_mode = True verbosity = 2
这是工作,我为所有测试用例重用一个DB。
我的问题是在测试数据库中看不到在测试用例期间创建的测试数据。我有一些失败的测试用例或所有测试用例都正常-没有任何变化。
对我来说有趣的事实:
1.在测试用例期间,我对DB进行了一些关于新测试数据的查询,这些查询返回了正确的结果。
1.在测试用例期间,我创建了新对象,DB中的序列发生了变化,就像DB中存在测试数据一样。
我做错了什么?
1条答案
按热度按时间qrjkbowd1#
您可能会混淆数据库和数据库中的数据。
我猜想
keepdb
标志只保留数据库(模式等)。一些测试用例在运行结束时删除数据,例如TransactionTestCase
在不支持回滚的数据库(例如,带有MyISAM存储引擎的MySQL)上运行的TestCase以及TransactionTestCase的所有示例将在测试结束时通过删除测试数据库中的所有数据来回滚。