unittest報告出現dict() -> new empty dictionary錯誤解決辦法
阿新 • • 發佈:2018-12-15
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 inlist(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) orisinstance(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 這個是指定報告中輸出的字串。
這個新版增加了,應該在程式碼中指定描述。