如何在Django中并行运行测试?
在Django项目中,我使用sqlite数据库来运行测试。因为它只使用内存,所以比MySQL快得多,但仍然不够快。在测试期间,仅使用4个处理器中的一个,并且不会消耗太多内存。所以,我希望在内存中有4个sqlite数据库来并行运行4个测试如何在Django中并行运行测试?,django,testing,parallel-processing,Django,Testing,Parallel Processing,在Django项目中,我使用sqlite数据库来运行测试。因为它只使用内存,所以比MySQL快得多,但仍然不够快。在测试期间,仅使用4个处理器中的一个,并且不会消耗太多内存。所以,我希望在内存中有4个sqlite数据库来并行运行4个测试 python manage.py test --parallel 有人尝试过吗?您可以通过以下方式轻松拆分linux上Parralallel上的应用程序测试: $ python manage.py test cms & \ python manage.
python manage.py test --parallel
有人尝试过吗?您可以通过以下方式轻松拆分linux上Parralallel上的应用程序测试:
$ python manage.py test cms & \
python manage.py test blog & \
python manage.py test store & \
python manage.py test registration
$
对于有很多应用程序的大型项目可能很有帮助,最好是每四个应用程序运行一次测试的bash脚本。您可以使用Django和Twisted的并行测试运行程序,如下所述:(源代码位于此处-文章末尾的链接)。您可以按照Django文档中关于测试的描述使用它
还有一个nose并行测试运行程序。自Django 1.9以来,Django可以使用其内置的单元测试功能并行运行测试
Django文档:根据Django 3.0,您可以使用一个
--parallel
选项
--平行[N]
在单独的并行进程中运行测试。由于现代处理器有多个内核,这使得运行测试的速度大大加快
因此,您可以使用以下命令并行执行测试
python manage.py test --parallel
您可以通过将进程数作为选项的值提供,例如--parallel=4,或者通过设置DJANGO_TEST_processs环境变量来调整进程数
如果您有一个大型Django项目,其中有很多测试单元案例,那么这将有助于大大减少测试执行时间。不起作用。后台测试行为异常,有些测试停止工作。此外,即使它们确实工作,输出也是混乱的(不是什么大问题)。最后,大多数应用程序完成得很快,而只有两个处理器处理两个繁重的应用程序…我很奇怪,后台测试的行为很奇怪,您有关于这个问题的更多数据吗?我明白了,在某种程度上,您想要的是一个测试一个测试地分配负载测试。。。有趣,不幸的是,我不清楚如何解决你的需求。如果您发现有什么有趣的事情要做,请随时更新此问题。您可以尝试使用Python的处理库并行运行测试并捕获输出。此外,您可能希望为每个数据库使用一个单独的sqlite db(通过--settings定义),以避免上面描述的猴子业务。通常不建议这样做,我发现测试通常可以通过sqllite,但不能通过postgres。