我们的开发团队使用了一个需要 最大行长为80个字符的 PEP8衬垫。
当我在 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 中发生的事件触发的接口。这种建议似乎有好的意图,但是被误导了,无助于回答原来的问题。
你可以使用像 规矩点这样的 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()
还是我自己咬紧牙关缩短它?