rsttst使重构的文本可测试

rsttst的Python项目详细描述


https://img.shields.io/badge/rsttst-testable-brightgreen.svghttps://travis-ci.org/willemt/rsttst.pnghttps://pypip.in/version/rsttst/badge.svghttps://pypip.in/download/rsttst/badge.svg

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的最新版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务