2014-10-29 46 views
-1

我有一些在CLI中使用配置文件运行的python脚本。测试脚本的所有内容都在“ABC”类中。以独立脚本和鼻子测试的方式运行python脚本

在ABC类的init中,我传递了在脚本中使用的配置文件。

所以,当我跑我的Python脚本独立的,我会说“蟒蛇script_one.py -c的config.cfg”

现在的问题是,我需要运行使用nosetests目录中的所有蟒蛇测试。鼻子测试库不喜欢这样的事实,即我在ABC类的init()中传递“config”。

我需要一种运行python的方式,如上面提到的那样用config和nosetests。

我切换到在Python configparser模块用来,它解析配置文件和我没有给他们传递给INIT()

class TestMe(object): 
    def __init__(self): 
     config = ConfigParser.ConfigParser() 
     config.read(file) 

配置文件在()被引用:

if __name__ == '__main__': 

    #config = c.parse_config() 
    #test = TestMe(config) 
    file = "configs/test_config.yaml" 
    print "inside main..." 
    config = ConfigParser.ConfigParser() 
    config.read(file) 

如果配置= c.parse_config()测试= TESTME(配置)已被使用,那么我将不得不通过我的配置文件(xyz.cfg)作为“script_1.py -c xyz.cfg) - 有没有一种方法来利用鼻测试?我问这个,因为鼻子测试不会让我通过“配置”init()的TestMe类。

的config.read(文件)会导致一个错误,当我做“nosetests script_1.py”

E 
====================================================================== 
ERROR: Failure: TypeError ('type' object is not iterable) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/nose/loader.py", line 519, in makeTest 
    return self._makeTest(obj, parent) 
    File "/usr/local/lib/python2.7/site-packages/nose/loader.py", line 578, in _makeTest 
    return MethodTestCase(obj) 
    File "/usr/local/lib/python2.7/site-packages/nose/case.py", line 345, in __init__ 
    self.inst = self.cls() 
    File "/home/..../script_1.py", line 30, in __init__ 
    config.read(file) 
    File "/usr/local/lib/python2.7/ConfigParser.py", line 300, in read 
    for filename in filenames: 
TypeError: 'type' object is not iterable 

有没有一种方法,我可以运行我的剧本与配置,并与nosetests独立?

回答

0

nose-testconfig解决了这一切!非常便利!