在python脚本中,如何忽略Apache Pig的Python装饰器进行独立单元测试

hal*_*leo 1 python testing decorator apache-pig

我有一个python脚本,它在Apache Pig下的Jython中执行.它用@schemaFunctionresp 定义了一些函数.该 @outputSchemaFunction装饰.

我想在Pig之外用一个独立的python主脚本在"普通的本地Python解释器"下测试这些函数.但是当我在本地Python系统下运行脚本时,解释器抱怨:"NameError: name 'outputSchema' is not defined"我明白独立的Python显然不支持这些装饰.

如何在本地Python解释器中测试我的脚本?我能以某种方式将调用脚本中的装饰器定义为"空"吗?或者是否有类似命令行选项来忽略装饰器?

mr2*_*ert 6

我正在使用猪0.10.0.

当猪将模块用作UDF时,它将设置__name____lib__.通常,__name__设置为模块的实际名称(减去.py).因此,您可以在if块内部outputSchemaoutputSchemaFunction内部定义一些空装饰器.就像是:

myudfs.py

#!/usr/bin/python

if __name__ != '__lib__':
    def outputSchema(dont_care):
        def wrapper(func):
            def inner(*args, **kwargs):
                return func(*args, **kwargs)
            return inner
        return wrapper

# Your UDFs go here
Run Code Online (Sandbox Code Playgroud)

您可以通过放置print __name__在顶部来验证这一点myudfs.py.