pytest-mock 修补未按预期工作。我的代码:
utils.py:
def my_func():
return 42
Run Code Online (Sandbox Code Playgroud)
classes.py:
from utils import my_func
class MyClass:
def class_method(self):
return my_func()
Run Code Online (Sandbox Code Playgroud)
test_classes.py:
import pytest
from classes import MyClass
def test_myclass(mocker):
mocker.patch("utils.my_func", return_value=21)
assert MyClass().class_method() == 21
Run Code Online (Sandbox Code Playgroud)
失败了,返回的是42而不是21。
我试图根据python 文档在我的 python 脚本中实现一个记录器。这是代码:
import logging
def generateLogger(loggername='SM-Logger', path="logs/log.log"):
logger = logging.getLogger(loggername)
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
formatter = logging.Formatter('%(asctime)s - %(name)s\
- %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
return logger
logger = generateLogger("testlogger", "testlog.log")
logger.WARNING("testtest")
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
File "loggertest.py", line 39, in <module>
logger.WARNING("testtest")
AttributeError: 'Logger' object has no attribute ‚WARNING'
Run Code Online (Sandbox Code Playgroud)