2015-07-02 21 views
16

Tôi đang sử dụng sau trong setenv để nhập biến môi trường từ nơi tôi chạy, nhưng có cách nhập tất cả các biến để không thực sự cần nhập bởi một.Làm thế nào để nhập tất cả các biến môi trường trong độc hại

ví dụ: {env: TEMPEST_CONFIG:} và {env: TEMPEST_CONFIG_DIR:} được sử dụng để nhập 2 biến này.

[testenv:nosetests] 
setenv = 
    TEMPEST_CONFIG={env:TEMPEST_CONFIG:} 
    TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:} 
deps = {[testenv]deps} 
commands = 
    find . -type f -name "*.pyc" -delete 
    bash {toxinidir}/tools/setup.sh 
    nosetests --with-xunit {posargs} 

Trả lời

24

Bạn có thể sử dụng passenv. Nếu bạn vượt qua tất cả các ký tự đại diện bắt * bạn có quyền truy cập vào tất cả các biến môi trường từ môi trường mẹ:

passenv = SPACE-Ly-GLOBNAMES

mới trong phiên bản 2.0.

Danh sách tên biến môi trường ký tự đại diện phải được sao chép từ môi trường gọi độc đến môi trường thử nghiệm khi thực thi lệnh kiểm tra. Nếu một biến môi trường được chỉ định không tồn tại trong môi trường yêu cầu độc tố, thì nó sẽ bị bỏ qua. Bạn có thể sử dụng * và? để so khớp nhiều biến môi trường với một tên.

tối thiểu tox.ini để tái sản xuất:

[tox] 
envlist = py27 
skipsdist = True 

[testenv] 
passenv = * 
whitelist_externals = echo 
commands = echo {env:MY_FANCY_ENV_VAR:} from my fancy env var :) 

gọi trong linux/unix shell:

MY_FANCY_ENV_VAR='hello' tox 

gọi trên Windows cmd.exe:

set MY_FANCY_ENV_VAR=hello & tox 

đầu ra:

py27 create: /tmp/tt/.tox/py27 
py27 installed: 
py27 runtests: PYTHONHASHSEED='2037875709' 
py27 runtests: commands[0] | echo from my fancy env var :) 
hello from my fancy env var :) 
_______________________ summary __________________________ 
    py27: commands succeeded 
    congratulations :) 
Các vấn đề liên quan