def pytest_runtest_setup(self, item): ''' Proactively setup shared fixtures in order ''' fixturenames = getattr(item, "fixturenames", item._request.fixturenames) keylist = [] scopenum = scopes.index(item._request.scope or "function") for argname in fixturenames: fixturedef = item._fixtureinfo.name2fixturedefs.get(argname) if fixturedef is None: continue if hasattr(fixturedef[-1], 'cached_result'): continue if getattr(fixturedef[-1], 'unittest', False): continue if fixturedef[-1].scopenum >= scopenum: continue layer = self.layers.get(layer_key(item._fixtureinfo, [argname]), None) weight = 1 if layer is None else layer.weight key = (fixturedef[-1].scopenum, weight, argname, fixturedef) keylist.append(key) keylist.sort() for scopenum, weight, argname, fd in keylist: if argname not in item.funcargs: #print("SETUP: %s (%s)" % (fd[-1].argname, fd[-1].scope)) item.funcargs[argname] = item._request.getfixturevalue(argname)
def get_pytest_function_scopenum(): return pt_scopes.index("function")
def get_pytest_scopenum(scope_str): return pt_scopes.index(scope_str)