Python 如何测试在tarfile.open上下文管理器中调用的函数?
我已经写了一个函数来创建一个tarballPython 如何测试在tarfile.open上下文管理器中调用的函数?,python,unit-testing,pytest,tar,Python,Unit Testing,Pytest,Tar,我已经写了一个函数来创建一个tarball #tarball.py 导入操作系统 导入tarfile def create_tarball(): 以tarfile.open(“path/to/tar/file”,“w:gz”)作为tar: 加焦油( “/path/to/included/directory”, arcname=os.path.basename(“/path/to/included/directory”), ) 我在tarfile.open上下文管理器上编写了一个通过测试的断言
#tarball.py
导入操作系统
导入tarfile
def create_tarball():
以tarfile.open(“path/to/tar/file”,“w:gz”)作为tar:
加焦油(
“/path/to/included/directory”,
arcname=os.path.basename(“/path/to/included/directory”),
)
我在tarfile.open
上下文管理器上编写了一个通过测试的断言
来自unittest.mock导入修补程序的
从tarball导入创建\u tarball
@修补程序(“tarball.tarfile.open”)
def测试创建tarball部分(模拟打开):
创建_tarball()
用(“path/to/tar/file”,“w:gz”)调用mock_open.assert_
如何为
tar文件内调用的函数编写测试。打开
上下文管理器?要为tar.add
函数编写测试,请执行以下操作
os.path.basename
函数tar。使用
tar的值。将上下文管理器中的函数添加到MagicMock
os.path.basename
函数的返回值os.path.basename
和tarfile.open
函数上断言来自unittest.mock导入补丁,MagicMock
从tarball导入创建\u tarball
@补丁(“tarball.os.path.basename”)
@修补程序(“tarball.tarfile.open”)
def test_create_tarball_full(模拟打开,模拟basename):
mock_add=MagicMock()
模拟\打开。返回\值。\输入\返回\值。添加=模拟\添加
mock_basename.return_value=“/path/to/included/directory”
创建_tarball()
用(“path/to/tar/file”,“w:gz”)调用mock_open.assert_
用(“/path/to/include/directory”)调用的mock\u basename.assert\u
mock_add.assert_调用_with(
“/path/to/included/directory”,arcname=“/path/to/included/directory”
)
⑨