加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_盐城站长网 (https://www.0515zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Mock在Python单元测试中的使用

发布时间:2021-01-09 21:08:59 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 《Mock在Python单元测试中的使用》要点: 本文介绍了Mock在Python单元测试中的使用,希望对您有用。如果有疑问,可以联系我们。 本文讲述的是 Python 中 Mock 的使用. 如何执行单元测试而不用考验你的耐心 很多时候,我们编写的软件会直接与那些被

你会注意到我们的测试用例没有太大变化:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from mymodule import RemovalService
  4. import mock
  5. import unittest
  6. class RemovalServiceTestCase(unittest.TestCase):
  7. ? ?@mock.patch('mymodule.os.path')
  8. ? ?@mock.patch('mymodule.os')
  9. ? ?def test_rm(self, mock_path):
  10. ? ? ? ?# instantiate our service
  11. ? ? ? ?reference = RemovalService()
  12. ? ? ? ?# set up the mock
  13. ? ? ? ?mock_path.isfile.return_value = False
  14. ? ? ? ?reference.rm("any path")
  15. ? ? ? ?# test that the remove call was NOT called.
  16. ? ? ? ?self.assertFalse(mock_os.remove.called, "Failed to not remove the file if not present.")
  17. ? ? ? ?# make the file 'exist'
  18. ? ? ? ?mock_path.isfile.return_value = True
  19. ? ? ? ?reference.rm("any path")
  20. ? ? ? ?mock_os.remove.assert_called_with("any path")

很好,我们知道?RemovalService?会如预期般的工作.接下来让我们创建另一个服务,将?RemovalService?声明为它的一个依赖:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import os.path
  5. class RemovalService(object):
  6. ? ?"""A service for removing objects from the filesystem."""
  7. ? ?def rm(self, filename):
  8. ? ? ? ?if os.path.isfile(filename):
  9. ? ? ? ? ? ?os.remove(filename)
  10. class UploadService(object):
  11. ? ?def __init__(self, removal_service):
  12. ? ? ? ?self.removal_service = removal_service
  13. ? ?def upload_complete(self, filename):
  14. ? ? ? ?self.removal_service.rm(filename)

(编辑:网站开发网_盐城站长网 )

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!