def add_test_fn_params(cls,fn_name,*a,**kw):
    """ Create new test function from function with params (similar to TestCase.subTest() ).
    Test function name: "test_" + new_fn_name + k1_v1_k2_v2. 

    Example:
        if fn_name = "_test_fun", kw=dict(a=2) 
        -> "test_fun_a_2
        if fn_name = "_do_fun", kw=dict(a=2) 
        -> "test_do_fun_a_2
        if fn_name = "do_fun", kw=dict(a=2) 
        -> "test_do_fun_a_2
    """
    def _fn(self):
        fun = getattr(self, fn_name)
        return fun(*a,**kw)
    s = "_".join("%s_%s"%(k,v) for k,v in kw.items())
    new_name = ("%s_%s"%(fn_name, s)).strip("_")
    if not new_name.startswith("test"):
        new_name = "test_" + new_name
    setattr(cls, new_name, _fn)