unittest報告出現dict() -> new empty dictionary錯誤解決辦法spa
說一下緣由,這是因爲unittest中採用了ddt驅動。 因爲版本問題致使code
問題如圖:blog
解決辦法:ip
從新安裝ddt版本,下降其版本字符串
1>查看ddt版本:get
pip show ddt
2>卸載已安裝的ddtstring
pip uninstall ddt
3>從新安裝ddt 並指定其版本it
pip install ddt==1.1.3
對比一下兩個版本代碼:pip
舊版:1.1.3io
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 這個是指定報告中輸出的字符串。
這個新版增長了,應該在代碼中指定描述。