繁体   English   中英

如何测试关闭 PIL 图像的方法(使用 unittest)?

[英]How do I test a method (using unittest) that closes a PIL image?

我有一个方法( close() ),它是我的 class ( Img )的一部分,如下所示:

    def close(self):
        Image.Image.close(self.image)

我一直在努力寻找一种方法来使用unittest package 测试此方法,因为它不返回任何内容,而且我不知道是否有办法实际检查图像是否关闭。

先感谢您!

您可以使用unittest.mock.patch方法来模拟PIL package 和Image.Image.close方法。 调用img.close()方法后,可以使用assert_call_once_with(*args, **kwargs)检查Image.Image.close方法是否被调用。

例如

img.py

from PIL import Image


class Img:
    def __init__(self):
        self.image = '123'

    def close(self):
        Image.Image.close(self.image)

test_img.py

import unittest
from unittest import mock
from img import Img


class TestImg(unittest.TestCase):
    @mock.patch('img.Image')
    def test_close(self, mock_Image):
        my_img = Img()
        my_img.close()
        mock_Image.Image.close.assert_called_once_with('123')


if __name__ == '__main__':
    unittest.main()

带有覆盖率报告的单元测试结果:

.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
Name                                     Stmts   Miss  Cover   Missing
----------------------------------------------------------------------
src/stackoverflow/63132966/img.py            6      0   100%
src/stackoverflow/63132966/test_img.py      10      0   100%
----------------------------------------------------------------------
TOTAL                                       16      0   100%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM