conftest.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import glob
  2. import io
  3. import logging
  4. import pytest
  5. from baker import logger, log_handler, yaml_load, ObjectDict
  6. # Disable default handler
  7. logger.removeHandler(log_handler)
  8. @pytest.yield_fixture(scope='function')
  9. def log_buff(request):
  10. buff = io.StringIO()
  11. handler = logging.StreamHandler(buff)
  12. handler.setLevel('DEBUG')
  13. logger.setLevel('DEBUG')
  14. logger.addHandler(handler)
  15. yield buff
  16. logger.removeHandler(handler)
  17. def pytest_addoption(parser):
  18. parser.addoption("-F", "--filter", help="Filter yaml files")
  19. def pytest_generate_tests(metafunc):
  20. if not 'test_cfg' in metafunc.fixturenames:
  21. return
  22. test_configs = []
  23. ids = []
  24. fltr = metafunc.config.option.filter
  25. for name in glob.glob('tests/*test.yaml'):
  26. if fltr and not fltr in name:
  27. continue
  28. test_cfg = ObjectDict(yaml_load(open(name)))
  29. ids.append(test_cfg.cfg)
  30. test_configs.append(test_cfg)
  31. metafunc.parametrize("test_cfg", test_configs, ids=ids)