如何解决超长patch路径触发PEP8 E501的问题?
解决patch路径过长违反PEP8 E501的问题
针对你遇到的@patch目标路径过长触发PEP8 E501的问题,这里提供几个可行的解决方案:
方案1:拆分字符串字面量(最直接)
Python会自动拼接相邻的字符串字面量,你可以把长路径拆成多行,每行控制在80字符以内,既符合规范又不影响功能:
from unittest.mock import patch class TestSomething: @patch( "someveryveryveryveryveryveryveryveryveryveryveryveryveryverylongpath." "to.a.method" ) def test_something(self, mock_method): # 你的测试逻辑 ...
方案2:用模块别名+路径段拼接(更易维护)
如果不想硬编码完整路径,可利用模块的__name__属性,结合列表拆分路径段后拼接,既避免长字符串,又保证路径的准确性:
from unittest.mock import patch import someveryveryveryveryveryveryveryveryveryveryveryveryveryverylongpath as svl # 拆分路径段,用join拼接成完整路径 IMP_PATH = ".".join([ svl.__name__, "to", "a", "method" ]) class TestSomething: @patch(IMP_PATH) def test_something(self, mock_method): # 你的测试逻辑 ...
注:确保拼接后的路径变量是模块级别的(定义在类外部),这样装饰器在加载时能正确读取到值。
方案3:改用上下文管理器形式
如果装饰器的长参数看着别扭,也可以换成patch的上下文管理器写法,同样支持拆分字符串:
from unittest.mock import patch class TestSomething: def test_something(self): with patch( "someveryveryveryveryveryveryveryveryveryveryveryveryveryverylongpath." "to.a.method" ) as mock_method: # 你的测试逻辑 ...
内容的提问来源于stack exchange,提问作者dmayilyan
相关产品推荐
相关产品推荐

