nodev帮助编写规范测试。

nodev.specs的Python项目详细描述


specs帮助您编写描述代码抽象行为的健壮测试 在测试中保留许多实现细节。

用一个例子来最好地解释这个总的想法, 让我们为下面的函数skip_comments编写一个规范测试 返回输入文件中每行的非注释部分:

def skip_comments(stream):
    return [line.partition('#')[0] for line in stream]

最简单的单元测试可能如下所示:

def test_skip_comments():
    assert skip_comments(['# comment']) == ['']
    assert skip_comments(['value # comment']) == ['value ']
    assert skip_comments(['value 1', '', 'value 2']) == ['value 1', '', value 2']

这样的单元测试与当前的skip_comments实现的关联比需要的多 每次添加一个小功能时,测试都需要更新, 就像把函数变成生成器一样:

def skip_comments(stream):
    for line in stream:
        yield line.partition('#')[0]

这可以通过以更通用的方式重新编写测试来解决:

def test_skip_comments():
    assert '' in skip_comments(['# comment'])
    assert 'value ' in skip_comments(['value # comment'])
    assert 'value 1' in skip_comments(['value 1', '', 'value 2'])
    assert 'value 2' in skip_comments(['value 1', '', 'value 2'])

让我们使用nodev.specs.FlatContainerhelper重新编写测试:

def test_skip_comments():
    assert '' in FlatContainer(skip_comments(['# comment']))
    assert 'value ' in FlatContainer(skip_comments(['value # comment']))
    assert 'value 1' in FlatContainer(skip_comments(['value 1', '', 'value 2']))
    assert 'value 2' in FlatContainer(skip_comments(['value 1', '', 'value 2']))

现在您可以选择跳过返回当前行索引的空行:

def skip_comments(stream):
    for index, line in enumerate(stream):
        value = line.partition('#')[0]
        if value:
            yield index, value

或者还返回每行的注释:

def skip_comments(stream):
    for index, line in enumerate(stream):
        value, sep, comment = line.partition('#')
        if value:
            yield index, value, sep + comment

nodev测试不需要更新,因为它几乎不需要假设细节 返回值的。

项目资源

Supporthttps://stackoverflow.com/search?q=nodev
Developmenthttps://github.com/nodev-io/nodev.specs
DiscussionTo be decided, see issue #15 of the pytest-nodev repository.
Downloadhttps://pypi.python.org/pypi/nodev.specs
Code qualityBuild Status on Travis CIBuild Status on AppVeyorCoverage Status on Coveralls
nodev websitehttp://nodev.io

贡献

我们非常欢迎您的贡献。请参阅CONTRIBUTING文档 最好的帮助方式。 如果您遇到任何问题,请提交一个问题与详细说明。

作者:

赞助商:

  • B-Open Solutions srl

许可证

specs是免费的开源软件 根据MIT许可证的条款分发。

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

推荐PyPI第三方库


热门话题
javasocket:BufferedOutputStream还是just OutputStream?   java确保BlockedQueue中的容量   java异常多部分/formdata请求失败。读取超时   java奇怪的日期字符串格式   java为什么线程池中的所有线程都不处理我的排队任务?   java如何从字符串列表/Url设置为墙纸   实现内联接口时java ClassNotFoundException   java打开一个socket需要多少cpu   java窗口/linux路径组件   使用十六进制值作为方法参数时的java NullPointerException   java如何使此内容可用于“另存为”?   java Android onTouchListener,更容易实现   ProgressDialog 安卓 studio的java模糊背景   运行TestNG时发生java错误无法通过查找找到应用程序名称   java指定JVM Eclipse Mac OS X   用于TracePoint2D的java jChart2D颜色   使用管理员权限启动独立服务器时,java客户端转换失败   处理Java时出错:不检查方法调用中的不可能状态   java在没有浏览器的服务器上打印html文件