Advertisement
Guest User

Untitled

a guest
Aug 6th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.54 KB | None | 0 0
  1. def configs_from_keyword(kw):
  2.     provs = []
  3.     # crappy approximation of pytest evaluation routine
  4.     false = {}
  5.     for known_prov in known_providers:
  6.         false[known_prov] = False
  7.  
  8.     for known_prov in known_providers:
  9.         if known_prov == kw or '[' + known_prov + ']' == kw:
  10.             ok = True
  11.         else:
  12.             ids = false.copy()
  13.             ids[known_prov]=True
  14.             try:
  15.                 ok = eval(kw, {}, ids)
  16.             except NameError as e:
  17.                 ok = False
  18.             except Exception as e:
  19.                 log.error("%s %s", type(e), e)
  20.                 ok = False
  21.             if type(ok) is list:
  22.                 ok = any(ok)
  23.         if ok:
  24.             provs += configs_from_name(known_prov)
  25.     return provs
  26.  
  27. _registered = False
  28.  
  29. def pytest_generate_tests(metafunc):
  30.     global _registered
  31.     if not _registered:
  32.         for known_prov in known_providers:
  33.             metafunc.config.addinivalue_line(
  34.                 "markers", known_prov
  35.             )
  36.         _registered = True
  37.  
  38.     if "provider_config" in metafunc.fixturenames:
  39.         provs = []
  40.  
  41.         if not provs:
  42.             kw = metafunc.config.getoption("keyword", "")
  43.             if kw:
  44.                 provs += configs_from_keyword(kw)
  45.  
  46.         if not provs:
  47.             provs += configs_from_name("mock")
  48.  
  49.         ids = [p.param_id for p in provs]
  50.         marks = [pytest.param(p, marks=[getattr(pytest.mark,p.name)]) for p in provs]
  51.  
  52.         metafunc.parametrize("provider_config", marks, ids=ids)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement