2014-01-24 66 views
2

我們正在嘗試使用鼻子來實現自動化測試框架。目的是添加一些命令行選項以傳遞到測試中,例如主機名。我們針對Web應用運行這些測試作爲集成測試。如何訪問測試中的插件選項? (Python鼻子)

因此,我們創建了一個簡單的插件,增加了一個選項,解析器:

import os 
from nose.plugins import Plugin 

class test_args(Plugin): 
    """ 
    Attempting to add command line parameters. 
    """ 
    name = 'test_args' 
    enabled = True 

    def options(self, parser, env=os.environ): 
     super(test_args, self).options(parser, env) 
     parser.add_option("--hostname", 
        action="store", 
        type="str", 
        help="The hostname of the server") 

    def configure(self, options, conf): 
     self.hostname = options.hostname  

該選項可現在當我們運行nosetests ......但我無法弄清楚如何使用它在一個測試案例中?這可能嗎?我找不到任何有關如何訪問測試用例中的選項或配置的文檔。

添加命令行參數純粹是爲了開發/調試代碼的目的。我們計劃將配置文件用於我們在竹子中的自動運行。但是,在開發集成測試和調試問題時,可以即時更改配置。但我們需要弄清楚如何首先實際使用這些選項......我覺得我只是缺少一些基本的東西,或者我是盲目的...

理想情況下,我們可以擴展testconfig plugin以使得在配置從這個論點:

--tc=key:value 

到:

--key=value 

如果有更好的方法來做到這一點,然後我所有的耳朵。

回答

0

所以,我已經發現瞭如何使這項工作:

import os 
from nose.plugins import Plugin 

case_options = None 

class test_args(Plugin): 
    """ 
    Attempting to add command line parameters. 
    """ 
    name = 'test_args' 
    enabled = True 

    def options(self, parser, env=os.environ): 
     super(test_args, self).options(parser, env) 
     parser.add_option("--hostname", 
        action="store", 
        type="str", 
        help="The hostname of the server") 

    def configure(self, options, conf): 
     global case_options 
     case_options = options 
使用此

你可以這樣做在您的測試情況下得到的選項:

from test_args import case_options 

爲了解決不同的配置文件的問題,我發現你可以使用一個setup.cfg文件這樣寫INI文件在默認的傳遞命令行參數。你也可以通過-c config_file.cfg來選擇不同的配置。這應該適合我們所需要的。

0

一個快捷方式是在測試中訪問import sys; sys.argv - 它將有傳遞給nose可執行文件的參數列表,包括插件的參數。或者你的插件可以將屬性添加到您的測試,你可以參考這些屬性 - 但它需要更多的重任 - 類似this answer.

相關問題