• python3 mock


    mock的官网学习备忘录:官网地址https://docs.python.org/3/library/unittest.mock.html#quick-guide

    1,安装

    python3 unittest内置了mock,直接from unittest import mock就可以

    2,简介

    用mock 可以对依赖组件进行模拟并替换掉, 从而不影响本次测试,不需要关心和本次功能无关的其他外在条件

    可以配置它们,指定返回值或限制哪些属性可用,然后断言它们是如何被使用的

    3快速开始

     

    #patch的用法,
    from unittest.mock import patch
    def f1():
        return 'f1'
    def f2():
        return 'f2'
    
    class Testf(unittest.TestCase):
        #这里直接写patch(f1)会报错,因为官方格式必须是@patch('module.ClassName2')
        """
        target, attribute = target.rsplit('.', 1)
        ValueError: not enough values to unpack (expected 2, got 1)
        During handling of the above exception, another exception occurred:
        TypeError: Need a valid target to patch. You supplied: 'f1'
        """
        #因为就是这个文件里的,所以就写上当前文件的名字就可以额
         #@unittest.mock.patch("mock_learn.f1")
         @unittest.mock.patch("f1")
         def test_f2(self,fun):
             #因为patch了f1,所以下面的fun指的就是f1了
             fun.return_value='sb'
             #print (f1())    #f1
             print (f2())     #f2
        
    
    if __name__=="__main__":
        unittest.main()        
    
    
    #方法在文件里
    '''
    from unittest.mock import patch
    import test3
    
    
    class TestCount(unittest.TestCase):
    
    
        @unittest.mock.patch("test3.fun1")
        def test_fun2(self,fun):
    
            fun.return_value='sb'
            ff=test3.fun2()
            fun.assert_called_once_with()
            print (ff)
            
            
    
    if __name__=="__main__":
        unittest.main() 
    
    #sbfun2
    '''
    #class在文件test3.py中
    '''
    from unittest.mock import patch
    import test3
    
    class TestCount(unittest.TestCase):
    
    
        @unittest.mock.patch("test3.Over.f1")
        
        def test_f2(self,fun):
    
            fun.return_value='sb'
            over=test3.Over()
            ff=over.f2()
            #fun.assert_called_once_with()
            #因为没调用f1,所以这个断言报错Expected 'f1' to be called once. Called 0 times
            print (ff)
            
            
    
    if __name__=="__main__":
        unittest.main()
    #f2
    '''

     

  • 相关阅读:
    kafka 项目实战
    7.DHCP的相关命令
    3.centos 7执行service iptables save报错问题
    39.NFS(网络文件系统)
    37.Samba 文件共享服务1--配置共享资源
    36.Samba 文件共享服务1--安装及配置参数解释
    35.简单文件传输协议
    34.vsftpd服务程序--虚拟用户模式
    33.vsftpd服务程序--本地用户模式
    32.vsftpd服务程序--匿名开放模式
  • 原文地址:https://www.cnblogs.com/xueli/p/8780476.html
Copyright © 2020-2023  润新知