Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
How Django';s";覆盖“U设置”;decorator在并行启动测试时工作_Django_Django Testing - Fatal编程技术网

How Django';s";覆盖“U设置”;decorator在并行启动测试时工作

How Django';s";覆盖“U设置”;decorator在并行启动测试时工作,django,django-testing,Django,Django Testing,我正在检查Django的设置模块是如何构建的,以及decorator在测试时是如何处理设置的,我只是看不出这个decorator的设计在并行运行测试时是如何避免问题的 我看到它在启用方法中为设置的属性指定了设置值和应用的更改,并存储了以前值的副本,然后在禁用方法中恢复。当我秘密地执行它时,这对我来说是可行的。但是当并行运行测试时,如果不影响其他也使用decorator的测试,比如覆盖相同的值,我就看不出这是如何工作的。我看到的是,在访问settings.overrided\u SETTING时,

我正在检查Django的设置模块是如何构建的,以及decorator在测试时是如何处理设置的,我只是看不出这个decorator的设计在并行运行测试时是如何避免问题的

我看到它在
启用
方法中为设置的
属性指定了设置值和应用的更改,并存储了以前值的副本,然后在
禁用
方法中恢复。当我秘密地执行它时,这对我来说是可行的。但是当并行运行测试时,如果不影响其他也使用decorator的测试,比如覆盖相同的值,我就看不出这是如何工作的。我看到的是,在访问settings.overrided\u SETTING时,最新执行的测试设置的值将返回到任何地方。事实上,此设置重写还应该影响在其他测试中返回的值,即使这些值没有被修饰

我的意思是,如果我们有这两个测试:

@override_settings(SETTING=1):
def test_1(self):
    ...
    ...
    print(settings.SETTING)

@override_settings(SETTING=2):
def test_2(self):
    ...
    ...
    print(settings.SETTING)

def test_3(self):
    ...
    ...
    print(settings.SETTING)
如果它们并行运行,假设执行了
test\u 1
,则开始执行它的代码,同时在执行
test\u 1
中的
print
语句之前调用
test\u 2
,方法是检查decorator实现,我希望他们两人都打印
2
,作为他们打印
的结果。根据执行时间的不同,
test_3
将返回原始值1,如果它也是并行运行的,则返回2

一定有什么我没有考虑到的,因为我不认为这段代码在存在这么长时间后会出现这种竞争情况

任何有助于理解这一点的帮助都将不胜感激