Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Squish/Using a Decorator to Profile Tests: Difference between revisions
< Squish
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 9: | Line 9: | ||
<code>def main():<br /> pass | <code>def main():<br /> pass | ||
import cProfile<br />profile = cProfile.Profile | import cProfile<br />profile = cProfile.Profile()<br />profile.runcall(main)<br /></code> | ||
Depending on your particular configuration, the previous code might lead you to run the test twice. To avoid the repetition, wrap your main function with a decorator instead: | Depending on your particular configuration, the previous code might lead you to run the test twice. To avoid the repetition, wrap your main function with a decorator instead: | ||
Line 17: | Line 17: | ||
</code>decorator.profile<br />def main():<br /> pass | </code>decorator.profile<br />def main():<br /> pass | ||
#in the decorator file<br />def profile | #in the decorator file<br />def profile(func):<br /> def inner():<br /> import cProfile<br /> p = cProfile.Profile()<br /> p.runcall(func)<br /> #do something to report the result | ||
return inner<br /><code> | return inner<br /><code> |
Revision as of 06:30, 25 February 2015
Use a decorator to profile tests
If your Squish tests are very intensive, or you have hundreds of them, you can run them trough a profiler from time to time. This will enable you to see where you're spending most of your time and will help optimize your efforts.
In order to do this you will need to run your main function through the python profiling package cProfile. For example:
def main():<br /> pass
import cProfile<br />profile = cProfile.Profile()<br />profile.runcall(main)<br />
Depending on your particular configuration, the previous code might lead you to run the test twice. To avoid the repetition, wrap your main function with a decorator instead:
import decorator
decorator.profile
def main():
pass
- in the decorator file
def profile(func):
def inner():
import cProfile
p = cProfile.Profile()
p.runcall(func)
#do something to report the result
return inner