PEP8 命名规范在测试类上的应用

39
我一直在查看Python代码风格指南PEP 8PEP8高级用法,以寻找如何命名我的测试类的线索。然而,在这两个网站上以及我查看的许多其他网站上,例如Python文档中的unittest页面,都没有提到这一点。我唯一看到的一致风格是“CapWords”。在unittest文档中,他们有TestSequenceFunctions和DefaultWidgetSizeTestCase的示例。

我想知道的是是否要使用“Name”Test还是Test“Name”。方法使用test_“name”,这基本上已经确定了。关于类,如果有约定,我很难找到一个。

希望论坛能帮助我解决这个问题。

2个回答

29

unittest的文档 给出了一个示例:

class TestSequenceFunctions(unittest.TestCase):

    def test_shuffle(self):
        ...

    def test_choice(self):
        ...

评论

这三个单独的测试被定义为以单词 test 开头的方法。这种命名惯例告知测试运行器哪些方法代表测试。


谢谢。测试本身不是问题,否则单元测试不会选择它们。 - musabaloyi
在2021年(新年快乐),这个没有改变。 - Timo

20

Django和SQLAlchemy是两个大型、流行的Python项目,它们都使用"Name"Test(s)。就我个人而言,我更喜欢这种方式而不是Test"Name",主要是因为当文件中有多个测试用例时,每个用例以"Test"开头会使扫描变得困难。

并不是说这等同于共识,只是两个重要的数据点和个人观察。


1
谢谢。我同意你的推理。 - musabaloyi
1
我个人会这样做,也很方便自动完成。 - turiyag
2
这是一个很好的观点,但如果你在模块中列出符号(在VS Code中按Ctrl+Shift+O),那么如果它们以test前缀开头,查找测试用例就会更容易,因为这些列表通常是按字母顺序排序的。大多数自动完成算法也不再要求你从头开始输入名称。 - natiiix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接