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 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)