我有一个带有postgresql数据库的django后端angularJS frontEnd应用程序。我正在使用StaticLiveServerTestCase运行e2e测试,它扩展了LiveServerTestCase和子类TransactionTestCase。 TransactionTestCase不会将每个测试都包装在事务中(因此您可以显式提交/回滚)。
我的测试设置如下:
我遇到的问题是我的setUp方法中的操作有时似乎没有在我的webdriver使GET成为我的应用程序URL之前提交(点击查询我在setUp中操作的表的django视图)...我的视图返回的数据是来自fixture-load的数据库的旧的,未操纵的状态。如果我在获取之后使用webDriver刷新页面,则通常会显示正确的数据,但并不总是......它似乎不是确定性的。
我猜这与setUp方法完全完成其对测试数据库的事务之间的某种竞争条件以及我的应用程序测试服务器连接生成的读取有关。它们是两个独立的连接,据我所知,每个连接中的事务都不能保证以任何特定的顺序发生。
我的数据库的隔离级别为psycopg2.extensions.ISOLATION_LEVEL_SERIALIZABLE
我的问题:在其他事务执行之前,有没有办法保证/强制数据库事务发生?我已经尝试过使用django.db.transaction.commit(),但这似乎没有诀窍......