2011-11-29 3 views
0

저는 Python의 unittest를 사용하여 테스트 프레임 워크를 작성하고 있습니다. 나는 테스트 된 애플리케이션 (part1-part1.py, part2-part2.py 등)의 개별 부분에 대해 별도의 모듈을 가지고있다. 도우미 모듈을 만들고 싶습니다. 그러면 구성 파일 이름이 모듈 이름 (part1.py - part1.conf, part2.py - part2.conf)과 동일하게 각 모듈의 구성 설정을 읽습니다. 구성 파일은 모듈과 동일한 폴더에 있습니다. part1.py를 실행할 때 config에 대한 설정이 part1.conf에 있음을 테스트에 알릴 필요가 있습니다. 어떻게해야합니까? 이 도우미 모듈은 반드시 테스트 모듈과 동일한 폴더에있을 필요는 없습니다. 외부 종속성을 최대한 줄이기 위해 코를 사용하고 싶지 않습니다.configparser가 config 파일을 열 때 모듈과 동일한 이름을 가진 파일을 여는 방법은 무엇입니까?

답변

1
def module_config(mod): 
    '''Loads the config residing next to the module.''' 
    import configparser, os.path 
    cp = configparser.ConfigParser() 
    cp.read_file(open(os.path.splitext(mod.__file__)[0] + '.conf')) 
    return cp 

# load config for some module 
import some_module 
module_config(some_module) 

# load config for current module 
module_config(sys.modules(__name__)) 
+0

mod 매개 변수를 메서드에 전달하지 않을 모듈 이름을 자동으로 결정하는 방법이 있습니까? –

+0

@AndriyYurchuk : 물론, 나는 그 기능을 좀 더 일반화시키고 그 관심사를 분리하는 것이 가능하도록 만들었습니다. 'module_config'에'mod' 대신'sys.modules (__ name __)'을 넣고'mod' 인자를 제거하십시오. –

+0

그건 실제로 문제를 만드는 것입니다. 내가 제안한 것을 수행하면 cp.read_file은 해당 함수를 호출하는 모듈이 아닌 해당 함수를 포함하는 모듈 옆에 있어야하는 conf 파일을 읽으려고 시도합니다. –