1. 程式人生 > >unittest報告出現dict() -> new empty dictionary錯誤解決辦法

unittest報告出現dict() -> new empty dictionary錯誤解決辦法

unittest報告出現dict() -> new empty dictionary錯誤解決辦法

說一下原因,這是由於unittest中採用了ddt驅動。  由於版本問題導致

 問題如圖:

解決辦法:

重新安裝ddt版本,降低其版本

1>檢視ddt版本:

pip show ddt

2>解除安裝已安裝的ddt

pip uninstall ddt

3>重新安裝ddt 並指定其版本

pip install ddt==1.1.3

 對比一下兩個版本程式碼:

舊版:1.1.3

    for name, func in
list(cls.__dict__.items()): if hasattr(func, DATA_ATTR): for i, v in enumerate(getattr(func, DATA_ATTR)): test_name = mk_test_name(name, getattr(v, "__name__", v), i)          #區別就在此處 if hasattr(func, UNPACK_ATTR): if isinstance(v, tuple) or
isinstance(v, list): add_test(cls, test_name, func, *v) else: # unpack dictionary add_test(cls, test_name, func, **v) else: add_test(cls, test_name, func, v) delattr(cls, name)
elif hasattr(func, FILE_ATTR): file_attr = getattr(func, FILE_ATTR) process_file_data(cls, name, func, file_attr) delattr(cls, name) return cls

新版1.2.0

    for name, func in list(cls.__dict__.items()):
        if hasattr(func, DATA_ATTR):
            for i, v in enumerate(getattr(func, DATA_ATTR)):
                test_name = mk_test_name(name, getattr(v, "__name__", v), i)
                test_docstring = getattr(v, "__doc__", None)

                if hasattr(func, UNPACK_ATTR):
                    if isinstance(v, tuple) or isinstance(v, list):
                        add_test(cls, test_name, test_docstring, func, *v)
                    else:
                        # unpack dictionary
                        add_test(cls, test_name, test_docstring, func, **v)
                else:
                    add_test(cls, test_name, test_docstring, func, v)
            delattr(cls, name)
        elif hasattr(func, FILE_ATTR):
            file_attr = getattr(func, FILE_ATTR)
            process_file_data(cls, name, func, file_attr)
            delattr(cls, name)
    return cls

從上邊的兩個ddt程式碼段,可以看出,新版新增加了一個test_docstring  這個是指定報告中輸出的字串。

這個新版增加了,應該在程式碼中指定描述。