test_providers.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import inspect
  4. import pytest
  5. from apps.web.core.db import Searchable
  6. from apps.web.common.models import UserSearchable
  7. from testcase.providers import generate_dict
  8. from apps.web.common import models as common_models
  9. from apps.web.device import models as device_models
  10. from apps.web.user import models as user_models
  11. from apps.web.dealer import models as dealer_models
  12. from apps.web.agent import models as agent_models
  13. from apps.web.management import models as management_models
  14. from common import DisposableModel
  15. def get_model_classes(*mods):
  16. results = set()
  17. for mod in mods:
  18. for name, obj in inspect.getmembers(mod):
  19. if ( inspect.isclass(obj)
  20. and issubclass(obj, Searchable)
  21. and obj not in (Searchable, UserSearchable)
  22. #: no abstract model
  23. and not obj._meta.get('abstract', False)):
  24. results.add(obj)
  25. return list(results)
  26. @pytest.mark.parametrize("model", get_model_classes(common_models, device_models, user_models, dealer_models, agent_models, management_models))
  27. def test_generate_models(model):
  28. with DisposableModel(model, **generate_dict(model)) as f:
  29. assert f