python - 如何在unittest-pytest中替换函数内部的变量
问题描述
我在我必须测试的方法内部替换变量时遇到问题,即:
def find_files(path):
path_dir = os.listdir(path)
...
并且出于测试的需要,我必须将path_dir
实际结果替换os.listdir
为某些测试列表,即['whatever1.txt', 'whatever2.txt', 'whatever3.txt']
怎么做?BR,达米安
解决方案
您可以使用mock.patch
为变量设置返回值。例如
with patch('os.listdir') as mocked_listdir:
mocked_listdir().return_value = ['.', '..']
find_files(path)
或者你可以设置一个副作用
with patch('os.listdir') as mocked_listdir:
mocked_listdir().side_effect = some_other_function
find_files(path)
推荐阅读
- jenkins - 詹金斯如何设置所有带有前缀“blah”的作业,以便在超过时间限制时停止
- ionic4 - toast.present() 在 Ionic 4 中失败
- mysql - 没有 MariaDB 引擎的 Ubuntu 19.04 上的 MySQL 服务器
- vb.net - 将 DLL 导入从 VB.NET 转换为 VB6
- python - Flask + DataTables:如何读取 DataTables 作为 JSON 发送的 AJAX 请求?
- r - 从字符串末尾删除重复编号
- python - 本地和毒性中不同的 flake8 行为
- c++ - 以管理员身份运行应用程序时有什么方法可以获取非管理员用户名
- vba - Moving only unread emails
- c++ - 将 Qt Designer 项目转换为 C++ 代码