2014-09-19 3 views
3

웹 응용 프로그램을 테스트 중이며 이미 unittest를 사용하여 몇 가지 테스트를 작성했습니다. 승인, 테스트중인 데이터 교환 등과 같은 몇 가지 필요한 단계가 있습니다. 이제 모든 클라이언트가 더 잘 작동하는지 테스트하고 싶습니다. 사실 나는 별도의 스레드에서 모든 클라이언트에 대해 동일한 테스트를 호출하고 모든 리턴 코드를 수집하여 결과를 인쇄하려고합니다. 내 질문은 어떻게 파이썬에서 이러한 스레드를 만드는 것입니다?파이썬 단위 테스트 다중 스레드

은의이 예를 살펴 보자 (bash는 내 임시 솔루션은 여러 파이썬 프로세스를 생성합니다) :이 같은 #something 주위

+0

당신이 떠들썩한 파티를 통해 그것을 할 수 있습니다 또는는 popen을 사용하고 스레드 – user1767754

+0

그것은 꽤 좋은 VIE 강타 작동에 유닛 테스트에 열 사용합니다. 이 솔루션이 "좋은"것인지 궁금합니다. – Suprido

답변

2

구글 작동하지 않습니다

import unittest 

class Test(unittest.TestCase): 

    def setUp(self): 
     pass 

    def tearDown(self): 
     pass 

    def testName(self): 
     pass 

if __name__ == "__main__": 
    unittest.main() 

thread.start_new_thread (unittest.main를) 수많은 사전 준비된 옵션이 있습니다. Nose은 일반적인 것 같습니다.

그렇지 않으면 내 프로젝트 중 하나로,이 후 위에서 유사 할 수 있지만 unittest에서 스위트를 사용, 3.3

if __name__ == "__main__": 
    from multiprocessing import Process 
    procs=[] 
    procs.append(Process(target=unittest.main, kwargs={'verbosity':2})) 
    procs.append(Process(target=unittest.main, kwargs={'verbosity':2})) 
    for proc in procs: 
     proc.start() 
    for proc in procs: 
     proc.join() 

당신이 특정 테스트를 실행하려면 파이썬에서 내 일했다.

+0

인수를 전달하는 데 문제가 있습니다. – Suprido

+0

흥미 롭습니다. 이 주석과 Adam의 게시물에 대한 답변으로 Python2.7에 Python 3.3 (또는 이전 버전)에서 수정 된 버그가 있는지 궁금합니다. 문제가 발생한 곳에서 파일을 열면 (다중 처리/process.py), e.arg [0] 주위에 str()을 넣어서 작동하게 할 수 있습니다. sys.stderr.write (** str (e.args [0]) ** + '\ n') – JasonAUnrein

0
from multiprocessing import Process import unittest 

if __name__ == '__main__': 
    p = Process(target=unittest.main, kwargs={'verbosity':2}) 
    p.start() 
    p.join() 

Traceback (most recent call last): File "/home/wasowicz/workspace/Integration_Tests/Tests/main.py", line 6, in <module> 
    p.start() File "/opt/python/x86_64/2.7.3-4/lib/python2.7/multiprocessing/process.py", line 130, in start 
    self._popen = Popen(self) File "/opt/python/x86_64/2.7.3-4/lib/python2.7/multiprocessing/forking.py", line 125, in __init__ 
    code = process_obj._bootstrap() File "/opt/python/x86_64/2.7.3-4/lib/python2.7/multiprocessing/process.py", line 268, in _bootstrap 
    sys.stderr.write(e.args[0] + '\n') TypeError: unsupported operand type(s) for +: 'bool' and 'str' 
관련 문제