openstack中tox的使用

2021-08-15 07:39:36 字數 1795 閱讀 7241

什麼是virtualenv

所謂 虛擬環境(virtualenv),就是可以在乙個主機上,自定義出多套的python環境,多套環境中使用不同的python解析器,環境變數設定,第三方依賴包,執行不同的測試命令,最重要的是各個環境之間互不影響,相互隔離。

最典型的應用場景就是測試在不同python版本下**的相容性。我們可以為py2.4,py2.5,py2.6,py2.7,py3.4等不同python版本建立不同的虛擬環境,通過tox進行統一管理。也可以自定義虛擬環境(tox.ini進行配置),例如:testenv:pep8,**格式檢查;testenv:cover,測試覆蓋率。

什麼是tox

tox是通用的虛擬環境(virtualenv)管理和測試命令列工具。

安裝tox

可以通過pip命令進行安裝,具體不做詳細介紹。

pip install tox

tox.ini

配置檔案:關於專案的基本資訊以及該專案待執行的環境。

這個檔案需要跟專案的setup.py檔案放置同一路徑下。

在這個路徑下,執行tox-quickstart 可生成示例tox.ini檔案,我們可以根據需要手動修改配置資訊。

在該路徑下,執行tox,發生什麼?

①打包專案②構建虛擬機器測試環境③測試專案**

envlist:指定virtualenv,下面的**中指定py27跟py35,那麼我們必須保證環境中已經安裝了python2.7跟python3.5, 否則會報錯。

api-ref、docs都是自定義,後續再討論。

第一次執行會比較慢,再次執行就會快很多,因為不在需要重新構造virtualenv,也不需要重新安裝依賴。 當然可以通過tox –recreate命令強制每次都重新構造

[tox]

minversion = 2.3.1

skipsdist = true

envlist = py35,py27,pep8,api-ref,docs,genconfig,genpolicy,releasenotes

testenv是tox預設的section,類似父類,一般會將一些公共的配置寫在這個section中,比如install_command、deps、commands等等。api-ref的i法:[testenv:api-ref]

執行tox -e api-ref時,會按照testenv中的配置進行依賴包的安裝。

install_command:將packages安裝進虛擬環境中,既包括test下的packages也包括deps定義的依賴。

必須包含 ,用來替換將要安裝的package名稱

如果採用pip進行安裝則必須包含

[testenv]

usedevelop = true

install_command = pip install -c

setenv = virtual_env=

deps = -r/test-requirements.txt

.[ldap,memcache,mongodb]

commands =

find keystone -type f -name "*.pyc" -delete

stestr run

whitelist_externals =

bash

find

passenv = http_proxy http_proxy https_proxy https_proxy no_proxy no_proxy pbr_version

參考指南:

1. 2.

openstack中的訊息匯流排

1.遠端過程呼叫 rpc remote procedure call 乙個服務程序呼叫其他遠端服務程序的方法,包含call和cast方法 call主要是通過同步執行,呼叫者會被阻塞,直到結果返回 cast主要是非同步執行,不會立即返回結果,頁不阻塞呼叫者 2.事件通知 event notificat...

Openstack中的浮動IP

預設情況下例項會被賦予固定ip,這時並不能保證例項會馬上可以從外面訪問到,一般來說需要配置防火牆來允許公共ip,然後建立一條nat規則從公共ip到私有ip的對映。openstack引入了乙個叫浮動ip的概念,浮動ip是一些可以從外部訪問的ip列表,通常從isp 買來的。浮動ip預設不會自動賦給例項,...

openstack部署中的錯誤總結

在安裝到glance上傳鏡象時出錯,折騰不出來,先記在這兒 1 glance index failed to show index.got error you are not authenticated.解決方法 keystone配置出錯,解決keystone問題 1 刪除以前mysql生成的key...