~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/testing.txt

  • Committer: Martin Pool
  • Date: 2010-10-08 09:56:05 UTC
  • mto: This revision was merged to the branch mainline in revision 5483.
  • Revision ID: mbp@sourcefrog.net-20101008095605-k73z2z147940nukx
DocĀ forĀ variations

Show diffs side-by-side

added added

removed removed

Lines of Context:
814
814
See also `Per-implementation tests`_ (above).
815
815
 
816
816
 
817
 
Test scenarios
818
 
--------------
 
817
Test scenarios and variations
 
818
-----------------------------
819
819
 
820
820
Some utilities are provided for generating variations of tests.  This can
821
821
be used for per-implementation tests, or other cases where the same test
829
829
Typically ``multiply_tests_from_modules`` should be called from the test
830
830
module's ``load_tests`` function.
831
831
 
 
832
A higher-level interface for multiplying tests is *test variations*.  A
 
833
test class can declare a list of `TestVariation` objects, and the tests
 
834
will be repeated for the cross-product of variations::
 
835
 
 
836
  class TestCheckout(TestCase):
 
837
 
 
838
    variations = [VaryByRepositoryFormat(), VaryByTreeFormat()]
 
839
 
 
840
the `TestVariation` must just provide a `scenarios` method that yields
 
841
`(variation_name, attr_dict)` pairs.  It may do this by looking in a
 
842
registry or at other dynamic information, so that plugins can cause new
 
843
scenarios to run.  Variations may of course take constructor paramaters to
 
844
change their behaviour.
 
845
 
 
846
If you use `variations`, adding this line to your test module will make
 
847
all classes automatically expand out.  You must have either this or a
 
848
manual `load_test`::
 
849
 
 
850
    from bzrlib.tests.variations import (
 
851
        load_tests_from_their_variations,
 
852
        )
 
853
 
 
854
    load_tests = load_tests_from_their_variations
 
855
 
 
856
Put the `load_tests` declaration or assignment immediately after the
 
857
import statements, so people can see the effect it will have on the rest
 
858
of the file.
 
859
 
832
860
 
833
861
Test support
834
862
------------