【问题标题】:Setting up django parallel test in setting.py在setting.py中设置django并行测试
【发布时间】:2017-06-06 22:34:40
【问题描述】:

您好,我知道可以通过--parallel 标志在 django 中并行运行测试,例如。 python manage.py test --parallel 10。它确实加快了我正在工作的项目中的测试,这真的很棒。但是公司的开发人员共享不同的硬件设置。所以理想情况下,我想将并行参数放在./app_name/settings.py 中,这样每个开发人员都会在测试中使用至少 4 个线程或多处理库提供的内核数量。

我知道我可以制作另一个脚本,比如说run_test.py,我在其中使用--parallel,但我希望让并行测试“不可见”。

总而言之 - 我的问题是:我可以在 django 应用程序的设置中放置并行测试运行的数量吗? 如果答案是肯定的。还有第二个问题 - 命令行参数 (X) manage.py --parallel X 会覆盖来自 './app_name/settings' 的设置

非常感谢任何帮助。

【问题讨论】:

    标签: python django unit-testing parallel-processing parallel-testing


    【解决方案1】:

    对此没有设置,但您可以覆盖test 命令以设置不同的默认值。在您安装的一个应用程序中,创建一个.management.commands 子模块,并添加一个test.py 文件。在那里你需要继承旧的测试命令:

    from django.conf import settings
    from django.core.management.commands.test import Command as TestCommand
    
    class Command(TestCommand):
        def add_arguments(self, parser):
            super().add_arguments(parser)
            if hasattr(settings, 'TEST_PARALLEL_PROCESSES'):
                parser.set_defaults(parallel=settings.TEST_PARALLEL_PROCESSES)
    

    这为--parallel 标志添加了一个新的默认值。运行python manage.py test --parallel=1 仍将覆盖默认值。

    【讨论】:

    • 像魅力一样工作!非常感谢。代码有两个小错误:if 语句中应该有“:”,应该有 'set_defaults' 而不是 'set_default'。再次感谢您,您节省了数小时的测试执行时间:)。
    • @AlexBaranowski 已修复 :)
    猜你喜欢
    • 2018-07-28
    • 2012-05-15
    • 2018-06-11
    • 2018-06-01
    • 2017-04-06
    • 2018-03-12
    • 2012-08-01
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多