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第三方库


热门话题
java静态工厂方法如何推断泛型?   Java中长整数与简单整数的比较   java无法使用JPA创建映射实体   java如何尽早停止处理JSP?   java错误:变量可能尚未初始化?   启用安全性时,WAS 855中的java Mbean调用因凭据为空而失败   java如何获取上次拆分后的最后时间间隔?   在java中删除所选图像   来自Guava EventBus订阅服务器的java抛出异常   java抑制异常作为收集多个异常的方法   java重新启动ScheduledExecutorService计划任务的正确方法是什么?   java为什么我得到org。冬眠HibernateeException:未配置CurrentSessionContext   将mouseListener添加到BuffereImage时发生java错误   java如何从<application>   java我一直收到一个错误,说“无法从int转换为Drawable”。我正在尝试将图像分配到位置。有办法解决这个问题吗?   java Android Jsoup证书问题   java Spring找不到HTTPrequest的映射