Speed up unit tests by about 15%.

Review Request #2575 — Created Sept. 3, 2011 and submitted

Information

Review Board

Reviewers

Speed up unit tests by about 15%.

A large part of the reason unit tests take so long is the loading of the
fixtures. Specifically, all the review request fixtures. However, many tests
don't even need all the fixtures that their class loads.

By making use of the new TestCase class and @add_fixtures decorator in Djblets,
we can be more specific about what fixtures are used where.

Several TestCase classes have been updated to only include the bare minimum
set of fixtures defined in the class, with individual tests listing the
other more specific fixtures they need.

Through this and some other improvements, I've shaved over 30 seconds from my
unit test run. That's a savings of about 15%.

There's still more we can do here. The test_reviewrequests fixture is the
biggest fixture, and most of what it contains should probably be split out.
A good first step is to move all the site-specific ones out into another
fixture. Without this, you need to include both test_reviewrequests and
test_site in order to properly load in review requests to test with, even
if we aren't testing with a site (since otherwise, those review requests come
in with a local_site as None).

We can also split out the review groups and changes into their own fixtures.
Many tests are really testing against those and don't need the full list of
review requests.
Ran the test suite several times and compared the speeds. It's greatly improving
the test runs.
Description From Last Updated

I think this would be simpler if you implemented it like this: fixtures = self.getattr(self, 'fixtures', []) if 'test_scmtools' in …

daviddavid
david
  1. Just one suggestion.
  2. reviewboard/webapi/tests.py (Diff revision 1)
     
     
     
     
     
     
     
     
     
     
     
     
     
    Show all issues
    I think this would be simpler if you implemented it like this:
    
    fixtures = self.getattr(self, 'fixtures', [])
    if 'test_scmtools' in fixtures:
        ...
    
    if 'test_users' in fixtures:
        ...
  3. 
      
chipx86
david
  1. Ship It!
  2. 
      
chipx86
Review request changed

Status: Closed (submitted)

Loading...