【发布时间】:2020-07-30 21:51:42
【问题描述】:
我相信我的问题可能是我没有为补丁方法提供规范参数。您可以看到 autospec 也不起作用。注释行和未注释行都给出相同的结果。并且搜索“python 模拟参数规范”并没有帮助,因为“规范”这个词太笼统了......
我有一个要测试的函数:
% cat fixTextFiles.py:
import os
from unittest.mock import patch
def fixFile(tables, dir, filename):
[...]
return None
还有一个我正在尝试编写的测试:
import os
import tableColumns
import unittest
import fixTextFiles
from unittest.mock import create_autospec
def test_fix_files(mocker):
rootdir = 'data_20209999/CalAccess/DATA/'
files = [rootdir + 'TEXT_MEMO.TSV', rootdir + 'SMRY.TSV']
mocker.patch('os.listdir', return_value=files)
mocker.patch('fixTextFiles.fixFile', return_value=None, autospec=True)
#mock_function = create_autospec('fixTextFiles.fixFile', return_value=None)
fixTextFiles.fixFiles(tableColumns.readTableColumns(), 'data_20209999/CalAccess/DATA', 'TEXT_MEMO.TSV')
结果:
============================= test session starts ==============================
platform darwin -- Python 3.7.3, pytest-6.0.0, py-1.9.0, pluggy-0.13.1
rootdir: /Users/ray/Projects/CalAccessImpls/open_calaccess_data_py
plugins: mock-3.2.0
collected 3 items
fetchSoSData_test.py .. [ 66%]
fixTextFiles_test.py F [100%]
=================================== FAILURES ===================================
________________________________ test_fix_files ________________________________
mocker = <pytest_mock.plugin.MockFixture object at 0x109623e80>
def test_fix_files(mocker):
rootdir = 'data_20209999/CalAccess/DATA/'
files = [rootdir + 'TEXT_MEMO.TSV', rootdir + 'SMRY.TSV']
mocker.patch('os.listdir', return_value=files)
mocker.patch('fixTextFiles.fixFile', return_value=None, autospec=True)
#mock_function = create_autospec('fixTextFiles.fixFile', return_value=None)
> fixTextFiles.fixFiles(tableColumns.readTableColumns(), 'data_20209999/CalAccess/DATA', 'TEXT_MEMO.TSV')
E TypeError: fixFiles() takes 1 positional argument but 3 were given
fixTextFiles_test.py:21: TypeError
=========================== short test summary info ============================
FAILED fixTextFiles_test.py::test_fix_files - TypeError: fixFiles() takes 1 p...
========================= 1 failed, 2 passed in 0.24s ==========================
【问题讨论】:
-
看起来你在嘲笑
fixFile和测试fixFiles。 -
该死。我可以倒着跑到世界各地,让时间倒转吗?
标签: python pytest python-mock