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


热门话题
在收到远程通知时对iBeacon进行java扫描   尝试在Java中实现MD5哈希的算法   java getLastLocation最近有多久了?   java线程创建侦听器   swing Java JComboBox接受ArrayList,但不显示ArrayList的项   构建服务器上的java XML验证速度较慢   Tomcat无法识别java中的更改(Intellij配置)   java 5中引入泛型的原因   java意图。Android中的额外_流   for循环Java直接遍历数组而不是数组变量   java内部类中的两个声明构造函数   java试图使用子文本字段在JPanel上设置边框   java如何允许在Android WebView中进行条带签出?   在Java中,如何将数字从一个类转移到另一个类?   从任务栏关闭浏览器时的java会话   java有没有一种自动化的方法来确保代码的所有部分都经过单元测试?   2DArrays Java编码查找数组