开发者

Django testing execution order and tables

In situations where a test executed and changed test database tables, would database tables return to original state after each test? If not, how should I know in what order 开发者_运维问答the tests are executed so that I will predict the state of database tables. For example,

class SimpleTest(Testcase):
    def test_insert(self):
        # testing to see if data correctly added to database

    def test_other_thing(self):
        # does insered data available here?


The database is rolled back at the end of every test.


For proper test isolation, when tests touch the database, you need to inherit from django.test.TestCase which handles database state isolation between one test execution and another.

Never, ever, depend on test execution order: if you need to, you are doing it wrong, because you are violating test isolation.

Remember that you don't need to use only unittest.TestCase or only django.test.TestCase: you can mix them as needed (you don't need the latter if your test does not touch the database).

Note that django.test.TestCase use transactions to speed up database state cleanup after each test, so if you need to actually test a database transaction you need to use django.test.TransactionTestCase (see https://docs.djangoproject.com/en/dev/topics/testing/#testcase)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜