紧跟在类或函数声明之后的Python文档字符串放在__doc__
属性中。
问题:如何提取稍后在函数中出现的其他“内部”文档字符串?
更新:编译器省略了这些文字陈述。我可以通过AST获取它们(和它们的行号)吗?
我为什么要问?
我有一个(没有完全出炉)的想法,使用这样的“内部”文档字符串来描述敏捷场景的给定/何时/然后部分:
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()
)。但与普通的单元测试不同,文档字符串将增加打印业务可读方案的能力以供参考。