我们的开发团队使用PEP8棉短绒,其最大行长为80个字符。
当我用python编写单元测试时,我喜欢使用描述性的方法名称来描述每个测试的功能。但是,这经常导致我超出字符数限制。
这是一个太长的函数示例...
class ClientConnectionTest(unittest.TestCase):
def test_that_client_event_listener_receives_connection_refused_error_without_server(self):
self.given_server_is_offline()
self.given_client_connection()
self.when_client_connection_starts()
self.then_client_receives_connection_refused_error()
我的选择:
您可以编写较短的方法名称!
我知道,但是我不想失去测试名称的描述性。
您可以在每个测试上方写多行注释,而不必使用长名称!
这是一个不错的主意,但是当我在IDE(PyCharm)中运行测试时,我将看不到测试名称。
也许您可以使用反斜杠(逻辑行连续字符)继续行。
不幸的是,如Dan的回答中所述,这不是Python中的选项。
您可以停止整理测试。
从某些方面讲这很有道理,但是鼓励使用格式正确的测试套件是一件很好的事情。
您可以增加行长限制。
我们的团队喜欢有限制,因为它有助于使代码在狭窄的显示器上保持可读性,因此这不是最佳选择。
您可以
test从方法开始时删除。这不是一个选择。Python的测试运行程序需要所有测试方法开始,
test否则它将无法使用它们。编辑:有些测试运行程序允许您在搜索测试函数时指定正则表达式,尽管我不愿意这样做,因为这是每个在项目上工作的人的额外设置。
您可以将EventListener分为自己的类并分别进行测试。
事件监听器是在其自己的类(和测试)。它只是一个由ClientConnection中发生的事件触发的接口。这种建议似乎有很好的意图,但方向错误,无助于回答最初的问题。
您可以使用像Behave这样的BDD框架。它是为表达性测试而设计的。
的确如此,我希望将来能使用更多的这些。尽管我仍然想知道如何将函数名称跨行分割。
最终...
Python中有没有一种方法可以将长函数声明分成多行?
例如...
def test_that_client_event_listener_receives_
connection_refused_error_without_server(self):
self.given_server_is_offline()
self.given_client_connection()
self.when_client_connection_starts()
self.then_client_receives_connection_refused_error()
还是我必须咬一口子并自己缩短子弹?
func.__doc__