假设我创建了这个简单的模块并调用它我的模块.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()
然后我把这个放在一起进行单元测试:
^{pr2}$(我知道这不是一个好的单元测试,因为它并不真正测试它,它只是运行它,但这与我的问题无关)
如果我在PyCharm中使用代码覆盖率运行这个单元测试,那么它只显示workerThreaded()
和{workerProcessed()
函数。在
如何让PyCharm在代码覆盖率中包含在新进程进程中启动的代码?另外,如何让它也包括if __name__ == '__main__':
块?在
我运行的是PyCharm 2.7.3和python2.7.3。在
在覆盖率.py可以度量子进程中的代码运行,详细信息在http://nedbatchelder.com/code/coverage/subprocess.html
我设法使它能与子进程一起工作,但不确定这是否适用于线程或python2。在
在项目根目录中创建.covergerc文件
创建网站自定义.py项目根目录中的文件 在
^{pr2}$这基本上检测代码是否在PyCharm覆盖范围内运行,并收集新生成的覆盖文件。有多个文件,一个用于主进程,一个用于每个子进程。因此,我们需要将它们与“coverage combine”结合起来,然后用“coverage xml”将它们转换为xml,并将结果文件复制到PyCharm生成的xml文件上。在
请注意,如果您在测试中杀死子进程覆盖率.py不会写入数据文件。在
它不需要其他任何东西,只需点击PyCharm中的“rununittests with Coverage”按钮。在
就这样。在
相关问题 更多 >
编程相关推荐