[TIP] live coverage info during running program

Joel B. Mohler joel at kiwistrawberry.us
Wed Jun 8 10:15:41 PDT 2016


Dear Python testers,

I'm trying to get a nice feedback loop for coverage testing both a Python REST
server and the client side GUI program.  I thought I could get coverage to
produce an html report on some interval -- say every 5-10 seconds.  This
doesn't seem to be a documented use-case ... or is it?

Following the documentation, I've inserted:

	import coverage
	cov = coverage.Coverage()
	cov.start()
	sys.coverer = cov # stash this in a global place
	my_program()  # bunch of code
	cov.stop()
	cov.save()
	cov.html_report()

Inside my_program (which is really a whole GUI event loop), I've kicked off a
little chunk periodically to update the html:

	sys.coverer.save()
	sys.coverer.html_report()
	# attempt at hacking some result-caching by coverage
	sys.coverer._measured = True

On the first time I come to my update-the-html code and I get an htmlcov
directory that looks correct.  On the second and subsequent times, it looks as
though it rewrites exactly the same html.

Is this possible?  Is there other caching I need to defeat?  There is file hash
checking code in the HtmlReport which I do not fully understand.

I understand this might be slow.  I was hoping that I could get an up-to-date
CoverageData object quickly then go htmlify it in the background.  That looks
difficult since the HtmlReport takes a Coverage object not a CoverageData.

Thanks, 
Joel



More information about the testing-in-python mailing list