Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 用参数化模块链接装饰器_Unit Testing_Wrapper_Nonetype_Parameterized_Decorator Chaining - Fatal编程技术网

Unit testing 用参数化模块链接装饰器

Unit testing 用参数化模块链接装饰器,unit-testing,wrapper,nonetype,parameterized,decorator-chaining,Unit Testing,Wrapper,Nonetype,Parameterized,Decorator Chaining,我正在为一个特定的问题寻求帮助。 我们正在编写测试套件,其中测试用例包含一个包含函数的类。这个函数是我们的测试用例。 测试用例由htmltestrunner执行。 如果一些测试用例为不同的参数测试类似的行为,我们将借助模块parameterezy-来参数化这个测试用例,以指定:with parameterize.expand,它是一个包装器。 现在,为了更有效地进行日志记录,我们想在一个单独的模块中编写一个函数,称为扩展日志记录。这应该作为参数化函数的包装器 这意味着: 参数化->换行->高级日

我正在为一个特定的问题寻求帮助。 我们正在编写测试套件,其中测试用例包含一个包含函数的类。这个函数是我们的测试用例。 测试用例由htmltestrunner执行。 如果一些测试用例为不同的参数测试类似的行为,我们将借助模块parameterezy-来参数化这个测试用例,以指定:with parameterize.expand,它是一个包装器。 现在,为了更有效地进行日志记录,我们想在一个单独的模块中编写一个函数,称为扩展日志记录。这应该作为参数化函数的包装器

这意味着: 参数化->换行->高级日志->换行->测试用例函数

否我为我的高级日志功能编写了以下代码(仅用于调试和测试):

当我不使用参数化包装器参数化我的测试用例时,该函数可以工作。 如果我使用参数化包装器,我发现失败:“NoneType”对象不可调用

有人能帮我吗? 他找了一整天

编辑:
我已经发现,parameterized.expand返回“NoneType对象”。有没有办法从parameterized.expand as return获取修饰函数?

我通过在我的内部函数上添加@wrap(func)解决了这个问题:

def decorator_func(func):
    print(Fore.RED +"Got into decorator_func")

    @wrap(func)  

    def wrapped_func(*args, **kwargs):
        print(Fore.GREEN + "Got into wrapped_func")
        
        try:
            print("Got in")
            retval = func(*args, **kwargs)
            print("Finished")

        except Exception as failure:

            print("FAILURE: " + str(failure))

            if type(failure) == AssertionError:
                print("ASSERTION ERROR")
                raise

            else:
                raise

        return retval
    return wrapped_func
我不知道它为什么有效,但它确实有效

def decorator_func(func):
    print(Fore.RED +"Got into decorator_func")

    @wrap(func)  

    def wrapped_func(*args, **kwargs):
        print(Fore.GREEN + "Got into wrapped_func")
        
        try:
            print("Got in")
            retval = func(*args, **kwargs)
            print("Finished")

        except Exception as failure:

            print("FAILURE: " + str(failure))

            if type(failure) == AssertionError:
                print("ASSERTION ERROR")
                raise

            else:
                raise

        return retval
    return wrapped_func