对django.test.TestCase的优化,适用于PostgreSQL
项目描述
这是一个替代的TestCase类,用于提高测试运行时间(我在我的项目中对一些测试进行了2倍性能提升)。
您可以直接使用它并获得免费的速度提升,只要您的项目满足以下条件
您使用Django 1.3(它可能适用于更新的版本,但我还没有尝试过)
您的测试使用PostgreSQL作为数据库后端,8.0或更高版本
您的测试使用单数据库设置
您的测试不执行对数据库连接的操作,这些操作会导致某些状态变化,而这些变化不会被savepoint回滚所撤销。
如果最后一点对您的一些测试不成立,您可以使用常规的django.test.TestCase来处理这些情况,并在大多数情况下获得速度提升。
如何使用
更改您的
from django.test import TestCase
到
from django_fasttest import TestCase
它是如何工作的
使其更快的原因是,fixture解析/加载是在每个TestCase上执行一次,而不是在每个测试上执行一次。在同一个TestCase中的测试之间,数据库会回滚(使用pgsql savepoint)到加载fixture之后的点。
同一个testcase中的所有测试都使用相同的数据库连接(标准TestCase类在测试之间关闭连接),并在同一个事务中运行。如果您在代码中使用事务,您将具有与Django 1.3中当前相同的限制
如果您有很多使用大型fixture的testcase,并且这些测试被分组在TestCase中,速度优势将更加明显。
项目详情
关闭
django-fasttest-0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d7869d943968941c6947f93ab2bc3d23315e9dc5b63775077e19b78c7f77a373 |
|
MD5 | 68ed22c9ec561aab9fe6c05bb07439bd |
|
BLAKE2b-256 | 8b4e5f3e04e21ef91755f01f05b07b5a37d2a5d3b42d81a6b6068e9d7a238a09 |