【发布时间】:2012-04-04 16:24:12
【问题描述】:
紧跟在类或函数声明之后的 Python 文档字符串被放置在 __doc__ 属性中。
问题:如何提取稍后在函数中出现的其他“内部”文档字符串?
更新:编译器省略了此类文字语句。我可以通过 AST 找到他们(以及他们的行号)吗?
我为什么要问?
我有一个(不完全成熟的)想法,使用这种“内部”文档字符串来描述敏捷场景的 Given/When/Then 部分:
def test_adding():
"""Scenario: Adding two numbers"""
adder = Adder()
"""When I add 2 and 3"""
result = adder.add(2, 3)
"""Then the result is 5"""
assert result == 5
通过提取文档字符串,测试运行框架可以生成如下输出:
Scenario: Adding two numbers
When I add 2 and 3 (PASS)
Then the result is 5 (FAIL)
AssertionError Traceback
...
我认为这比Behave、Freshen、Lettuce、PyCukes 中采用的方法更简洁,后者需要为每个步骤定义一个单独的函数。我不喜欢将步骤文本重复为函数名称 (@When("I add numbers") def add_numbers())。但与普通单元测试不同的是,文档字符串将添加打印出业务可读场景以供参考的能力。
【问题讨论】: