![](/img/trans.png)
[英]How to a run specific code before & after each unit test in Python
[英]Unable to run code inside python unit test
嘗試為 python3 腳本編寫單元測試時遇到問題。 該代碼在測試定義內運行時拋出 AttributeError ,但如果我在測試定義類之外的同一文件中運行相同的代碼,則不會。
編碼:
class TestDataCleaningMethods(unittest.TestCase):
def test_one(self):
data = pd.DataFrame(columns=[
'categoryId',
'regionId',
'districtId',
'jobType',
'contractType',
'payType'])
result = service.__columns_to_snake_case(data)
拋出以下錯誤:
AttributeError: module 'service' has no attribute '_TestDataCleaningMethods__columns_to_snake_case'
我搜索了一下,發現了一些關於 unittest 屬性錯誤的問題和答案,但沒有看到任何與此問題完全匹配的問題和答案。
另一件需要注意的事情是,我已經使用 Monkey-patched import
來返回 Mocks,但我看不到它干擾了 unittest 的功能。 為了完整起見,這是代碼:
orig_import = __import__
original_imports = [
"service",
"pandas"
]
def import_mock(name, *args):
if name in original_imports:
print(f"Using original imports for {name}")
return orig_import(name, *args)
print(f"Mocking {name}")
return mock.MagicMock()
with mock.patch('builtins.__import__', side_effect=import_mock):
import service
任何幫助是極大的贊賞
解決了,原來是函數名中雙下划線的問題。 雙下划線使 python 解釋器重命名屬性以防止沖突。 更改函數名稱以刪除雙下划線可解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.