rsttst使重构的文本可测试
rsttst的Python项目详细描述
rsttst使重构的文本文档可测试。
实际上,这个自述文件是可测试的,用于测试rsttst。
如果您的测试记录了您的系统是如何工作的,那么为什么不将您的测试和文档正式合并为一个呢?
下面是一个示例:
2+2=4
标题“2+2=4”在转换为 python友好标识符(即2加2等于4)。
下面代码块中的bash代码将运行…
echo'2 + 2'| bc
…生成的标准输出将与以下代码块进行比较:
4
如果stdout与上面的块不匹配,则测试失败。
点符号
有时你想要灵活地接受你所接受的输出。您可以使用“.”和“:class:dotted”rst指令选项来支持此操作。
echo Date: $(date)echo'\ok'
下面的代码块使用“:class:dotted”选项。
Date: ............................
\ok
三个点的匹配方式与您期望的“+”正则表达式模式的工作方式类似:
echo'<NZ>'echo$(date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S")
下面的代码块使用“:class:dotted”选项。
<...> DATE: ... TIME: ...
生成测试
在hood下,rsttst生成python代码,可通过py.test执行。 下面是我们如何生成python测试代码:
rsttst README.rst cat test_readme.py | head -n 28
生成的测试代码如下所示:
# -*- coding: utf-8 -*- from rsttst.core import run, Dotted def test_2_plus_2_equals_4(): output= run(u"""echo '2 + 2' | bc""") assert output== u"""4""" def test_dotted_notation(): output= run(u"""echo Date: $(date) echo '\\ok'""")expected= Dotted(u"""Date: ............................ \\ok""") cmp(output, expected)expected= u"{0}".format(expected) assert output== expected def test_dotted_notation__2(): output= run(u"""echo '<NZ>' echo $(date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S")""")expected= Dotted(u"""<...> DATE: ... TIME: ...""") cmp(output, expected)expected= u"{0}".format(expected) assert output== expected def test_generating_tests(): output= run(u"""rsttst README.rst cat test_readme.py | head -n 28""")
Windows新行
^ m个字符将自动删除。
printf'supports\012\015windows new lines'
supports windows new lines
忽略代码块
有时你想使用一个代码块,而不需要rsttst测试它。
您可以使用“:class:ignore”指令忽略此代码块:
.. code-block:: bash :class: ignore
运行测试
您可能可以使用另一个测试运行程序,但pytest工作得很好:
py.test -k 'not test_running_the_tests'| grep -v seconds
注意:我们必须排除“正在运行的测试”,否则会一直是海龟。
=============================test session starts============================== platform ... collected 6 items test_readme.py ..... =============1 tests deselected by '-knot test_running_the_tests'=============
功能性
现在rsttst只支持bash测试。
常见问题解答
为什么pytest对我的json测试抛出“indexerror:list index out of range”异常?
请升级到pytest的最新版本