conftest.py 1.1 KB

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