Python 第三方软件包的mock.patch()的Pytest路径
为什么第一个案例成功。但是第二个案例失败了。断言者错误:预期“詹金斯”会被调用Python 第三方软件包的mock.patch()的Pytest路径,python,pytest,Python,Pytest,为什么第一个案例成功。但是第二个案例失败了。断言者错误:预期“詹金斯”会被调用 util.py from jenkinsapi.jenkins import Jenkins import os class Util: @staticmethod def rm(filename): os.remove(filename) @staticmethod def get_jenkins_instance(): Jenkins(
util.py
from jenkinsapi.jenkins import Jenkins
import os
class Util:
@staticmethod
def rm(filename):
os.remove(filename)
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_remove(mocker):
m = mocker.patch('os.remove')
Util.rm('file')
m.assert_called()
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins')
Util.get_jenkins_instance()
m.assert_called()
from jenkinsapi.jenkins import Jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('util.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
import jenkinsapi.jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
jenkinsapi.jenkins.Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
test_util.py
from jenkinsapi.jenkins import Jenkins
import os
class Util:
@staticmethod
def rm(filename):
os.remove(filename)
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_remove(mocker):
m = mocker.patch('os.remove')
Util.rm('file')
m.assert_called()
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins')
Util.get_jenkins_instance()
m.assert_called()
from jenkinsapi.jenkins import Jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('util.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
import jenkinsapi.jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
jenkinsapi.jenkins.Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
两个文件在同一个根文件夹中。不太清楚Python的
导入
和自。。。导入…
但是如果您使用来自的。。。导入…
,模拟显示如下:
util.py
from jenkinsapi.jenkins import Jenkins
import os
class Util:
@staticmethod
def rm(filename):
os.remove(filename)
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_remove(mocker):
m = mocker.patch('os.remove')
Util.rm('file')
m.assert_called()
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins')
Util.get_jenkins_instance()
m.assert_called()
from jenkinsapi.jenkins import Jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('util.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
import jenkinsapi.jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
jenkinsapi.jenkins.Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
如果直接使用import
,模拟显示如下:
util.py
from jenkinsapi.jenkins import Jenkins
import os
class Util:
@staticmethod
def rm(filename):
os.remove(filename)
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_remove(mocker):
m = mocker.patch('os.remove')
Util.rm('file')
m.assert_called()
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins')
Util.get_jenkins_instance()
m.assert_called()
from jenkinsapi.jenkins import Jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('util.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
import jenkinsapi.jenkins # <-- difference A
class Util:
@staticmethod
def get_jenkins_instance():
jenkinsapi.jenkins.Jenkins(
'host',
username='username',
password='password',
ssl_verify=False,
lazy=True)
import pytest
from util import Util
def test_util_get_instance(mocker):
m = mocker.patch('jenkinsapi.jenkins.Jenkins') # <-- difference B
Util.get_jenkins_instance()
m.assert_called()
要模仿詹金斯,你必须编写下一个mock.patch(“utils.Jenkins”),哇,它很管用@alex2007v只是因为我导入它的方式不同,所以
操作系统不需要utils
。删除?您作为模块导入的操作系统,对于操作系统,您不需要此