【发布时间】:2014-07-29 23:37:01
【问题描述】:
假设我创建了这个简单的模块并将其命名为 MyModule.py:
import threading
import multiprocessing
import time
def workerThreaded():
print 'thread working...'
time.sleep(2)
print 'thread complete'
def workerProcessed():
print 'process working...'
time.sleep(2)
print 'process complete'
def main():
workerThread = threading.Thread(target=workerThreaded)
workerThread.start()
workerProcess = multiprocessing.Process(target=workerProcessed)
workerProcess.start()
workerThread.join()
workerProcess.join()
if __name__ == '__main__':
main()
然后我把它放在一起进行单元测试:
import unittest
import MyModule
class MyModuleTester(unittest.TestCase):
def testMyModule(self):
MyModule.main()
unittest.main()
(我知道这不是一个好的单元测试,因为它实际上并没有测试它,它只是运行它,但这与我的问题无关)
如果我在 PyCharm 中使用代码覆盖率运行此单元测试,那么它只会显示 workerThreaded() 和 main() 函数内的代码被覆盖,即使它显然也覆盖了 workerProcessed() 函数。
如何让 PyCharm 将在新进程进程中启动的代码包含在其代码覆盖范围中?另外,我怎样才能让它也包含if __name__ == '__main__': 块?
我正在运行 PyCharm 2.7.3 以及 Python 2.7.3。
【问题讨论】:
标签: python unit-testing code-coverage pycharm