• Use N function for unit tests (not integration tests) for the main model.
  • Use G function instead of N for shelving configurations. It helps to identify errors.
  • Use ignore_fields option to deal with fields filled by listeners.
  • Use custom values for unsupported fields.
  • Use default lesson for unsupported fields with a custom function that generated data.
  • Use fill_nullable_fields for unsupported nullable fields.
  • Use fk_min_depth option to test trees.
  • [Automated Test Patterns]( (in Portuguese)


  • Using auto generated data in an assertion method.
  • Shelving a static value for a field with unique=True. Raise an error.
  • Overriding a lesson Copier with None.
  • Using Copier to fix a bad design of the code.
  • Too many named lessons configurations.
  • Mix data fixture algorithms in the same test suite.
  • Use default and custom lessons to avoid fixing a messy architecture.
  • Extensive use of global set up: setup suite (from DDF), setup module and setup class (from unittest2).

A good automated test

  • Simple
  • Legible
  • Repeatable
  • Independent
  • Isolated
  • Useful
  • Unique
  • Accurate
  • Professional
  • Fast