파이썬의 unittest
을 사용 중이며 몇 개의 스레드를 시작하고 완료 될 때까지 기다리는 테스트를 작성하려고합니다. 스레드는 일부 unittest
어설 션이있는 함수를 실행합니다. 어설 션 중 하나라도 실패하면 테스트가 실패했으면합니다. 이것은 사실이 아닌 것 같습니다.Python unittest 및 multithreading
편집 : 최소 실행 가능한 예 (python3)
import unittest
import threading
class MyTests(unittest.TestCase):
def test_sample(self):
t = threading.Thread(target=lambda: self.fail())
t.start()
t.join()
if __name__ == '__main__':
unittest.main()
출력은 다음과 같습니다 당신이 예외가 끝날 수 있도록 그래서
sh-4.3$ python main.py -v
test_sample (__main__.MyTests) ... Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 813, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 766, in run
self.__target(*self.__args, **self.__kwargs)
File "main.py", line 7, in <lambda>
t = threading.Thread(target=lambda: self.fail())
File "/usr/lib64/python2.7/unittest/case.py", line 450, in fail
raise self.failureException(msg)
AssertionError: None
ok
----------------------------------------------------------------------
Ran 1 test in 0.002s
OK
내가 잘못 생각한 것 같습니다. 테스트중인 함수의 샘플을 보여주세요. – Dan
@ Dan : 가장 단순한'test_fail (self) : self.fail()'이라도 뭐든지 될 수 있습니다. –
테스트 케이스에서 스레드를 실행할 필요가 없습니다. 테스트중인 함수가 스레드를 실행하는 경우 대상 함수를 조롱하고 호출에 대해 어설 션함으로써 해당 동작을 테스트 할 수 있습니다. 스레딩 클래스를 조롱 할 수도 있습니다. – Dan