2012-10-21 5 views
0

나는속성을 파이썬 파일에 설정하는 방법은 무엇입니까?

flow = ['1','4','5','2'] 

def test_generator(test): 
    def test_parser(self): 
     print test 
    return test_parser 

class API_tests(unittest.TestCase): 
     pass 


for test in flow: 
    test_name = 'test_%s' % test 
    test = test_generator(test) 
    setattr(API_tests, test_name, test) 

이 작동합니다 .. 클래스에 대한 속성을 설정하는 방법을 알고 있지만, 파일을 설정하는 방법을 찾을 수 없습니다.

나는 내 예상 동적

을 설정,이 파일은 기능 (test_generator X 4)가 추가 될 수 있도록, 대신 클래스의 객체로 파일로 않은 setattr()에 API_tests를 교체하려면 내가 실행으로 결과가 명령 줄에서 'nosetests -v이'가

이 질문은 다른 작품에있을 수 있습니다 '4 개 테스트 통과'가 표시됩니다되어 객체로 현재 파일을 얻을 수있는 방법

감사

+0

를 실행합니다. 그러나 그것은 문자열입니다. – aychedee

+2

nosetest가 실행할 수있는 X (이 경우 4) 테스트를 만들려고하십니까? 그렇다면 테스트 생성기에 대해 가장 가까운 지원을 살펴보십시오. 요컨대, 호출 가능 객체와 호출 가능 객체가 요구하는 인수를 생성하는 생성자를 작성하십시오. 코가 너를 위해 그들을 모두 달릴거야. –

+0

여기 현재 모듈에서 속성을 설정하는 방법을 찾을 수 있습니다. (실제로 생각하는 것입니다.) [현재 모듈에서 setattr()을 호출하려면 어떻게합니까?] (http://stackoverflow.com/questions)/2933470/how-do-i-call-set-at-the-current-module)에 나와 있습니다. API_tests.test_generator.test_flows ('5'OK (', 4') API_tests.test_generator.test_flows 확인 ... API_tests.test_generator.test_flows ('1') : –

답변

0

동적으로 작성하는 것이 아니라 (네가 생각한대로) 모듈 네임 스페이스에 테스트 함수를 추가하고 테스트 생성기에 대해 nosetest 지원을 사용한다.

코가 생성자를 감지하고 생성자가 호출 가능함을 요구하고 호출 가능한 모든 인수가 필요한 경우, 호출자가 반복하여 각 테스트를 실행합니다.

귀하의 예를 들어이 주어

def check_flow_value(val): 
    # assert something about val 
    assert True 

def test_flows(): 
    flow = ['1','4','5','2'] 
    for val in flow: 
     yield check_flow_value, val 

로 다시 작성할 수, 코는 현재 파일의 이름은 __file__``에 4 개 테스트

+0

응답 같을 것이다) ... ok API_tests.test_generator.test_flows ('2',) ... ok 내 문제는 이런 식으로 1,2,4,5가 실제로 hugh 매개 변수로 대체된다는 것입니다. 출력 할 테스트 이름을 제공하고 싶습니다. 매개 변수가 아닌 이름 만 표시됩니다 .. 가능합니까? – eligro

+0

unittest 또는 nosetest에서 볼 수있는 ** test **가 args가없는 매우 간단한 함수가되도록 테스트 결과가 동적으로 테스트 함수를 감쌀 수 있다고 걱정되면 출력됩니다. 예 : 부분적으로 :'new_test_method = 부분 (create_generic_test, arg_name = arg)' – Hardbyte