def METHOD_NAME(request):
    """
    fixture is the pytest way to declare initalization function.
    Scope = module significate that this function will be called only time for this file.
    If no scope precised it call config for each test.
    This function can have a return value, it will be the value of 'config' argument for the tests
    """
    cfgContent = """
  DIRAC
  {
    Setup=TestSetup
    Setups
    {
      TestSetup
      {
        WorkloadManagement=MyWM
      }
    }
  }
  Systems
  {
    WorkloadManagement
    {
      MyWM
      {
        URLs
        {
          ServiceDips = dips://$MAINSERVERS$:1234/WorkloadManagement/ServiceDips
          ServiceHttps = https://$MAINSERVERS$:1234/WorkloadManagement/ServiceHttps
        }
      }
    }
  }
  Operations{
    Defaults
    {
      MainServers = server1, server2
    }
  }
  """
    with open(testCfgFileName, "w") as f:
        f.write(cfgContent)
    gConfig = ConfigurationClient(fileToLoadList=[testCfgFileName])  # we replace the configuration by our own one.
    # def tearDown():
    # Wait for teardown
    yield METHOD_NAME
    """
    This function is called at the end of the test.
  """
    try:
        os.remove(testCfgFileName)
    except OSError:
        pass
    # SUPER UGLY: one must recreate the CFG objects of gConfigurationData
    # not to conflict with other tests that might be using a local dirac.cfg
    gConfigurationData.localCFG = CFG()
    gConfigurationData.remoteCFG = CFG()
    gConfigurationData.mergedCFG = CFG()
    gConfigurationData.generateNewVersion()
    print("TearDown")
    # request is given by @fixture decorator, addfinalizer set the function who need to be called after the tests
    # request.addfinalizer(tearDown)