相关疑难解决方法(0)

如何根据传递给 open() 的参数以不同方式模拟打开

我的问题是如何在 python 中模拟 open ,以便它根据调用 open() 的参数做出不同的反应。这些是一些可能的不同场景:

  • 打开一个模拟文件;阅读预设内容,基本场景。
  • 打开两个模拟文件并让它们为 read() 方法返回不同的值。打开/读取文件的顺序不应影响结果。
  • 此外,如果我调用open('actual_file.txt')打开一个实际文件,我希望打开实际文件,而不是具有模拟行为的魔术模拟。或者,如果我只是不想模拟对某个文件的访问,但我确实希望模拟其他文件,那么这应该是可能的。

我知道这个问题:Python mockbuiltin 'open' in a class using two different files。但这个答案只能部分满足第二个要求。不包括有关顺序独立结果的部分,并且它没有指定如何仅模拟某些调用,并允许其他调用进入实际文件(默认行为)。

python unit-testing mocking file-access

2
推荐指数
1
解决办法
3683
查看次数

在 contextlib 中使用时模拟内置的“打开”函数

我知道之前有人问过这个问题,但我有一个特殊的问题,这意味着我希望 mock_open 实际返回一个特定的模拟对象。

我有一个要测试的功能:

def foo(src,dest):
    with contextlib.nested(
         open(src,'r'),
         open(dest,'w')) as (src,dest):
         d = src.read(1)
         ....
Run Code Online (Sandbox Code Playgroud)

我的问题是,使用 mock_open(),如何让它返回特定的 src 和 dest 模拟,以便我可以对它们进行断言?即使我使用 mock_open(mock=mock_src) 它仍然没有传递我想要的对象,而是一个新的对象。

python unit-testing mocking

1
推荐指数
1
解决办法
1781
查看次数

标签 统计

mocking ×2

python ×2

unit-testing ×2

file-access ×1