我需要通過更改名爲process.py的應用程序模塊頭中的默認值來單元測試python模塊。聲明的默認值是一個固定的int。我可以改變它來使用os.environ中的其他東西,但我希望簡單地分配全局,但顯然我缺少對'def'的一些理解。python模塊變量不能作爲函數默認
process.default_timeout_secs = 2
# --name: process
default_timeout_secs = 120
def call_process(cmd, timeout=default_timeout_secs):
print 'run:', cmd, 'timeout:', timeout
...
# --name: test_process
from nose.tools import *
import process
@ raises(TimeoutExpired)
def test_process_run_modified_default():
process.default_timeout_secs = 5
run(sleep 10)
我從其他的帖子明白,對於default_timeout_secs的process.call_process.func_defaults值不是一個在模塊的頂部時,該模塊是進口的。我如何更改函數中使用的默認值?
process.default_timeout_secs = 5個 process.call_process.func_globals [ 'DEFAULT_TIMEOUT'] process.call_process.func_defaults (120)
Out[21]: 5
>>> process.call_process(cmd)
Out[22]: call_process: cmd= sleep 2 timeout= 120 <----- 120?
Executing cmd sleep 2 verbose=True
輸出應該顯示異常TimoutExpire d。