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中的else if语句返回语法错误   http如何解析从表单到REST Java/Webservice的post请求   java如何在SpringBoot中为RestTemplate编写JUnit测试   java动态检查实例是否实现接口   java在Android中使用ArrayAdaptor时,数据不会显示   根据前序遍历返回二进制树的java方法   Arquillian测试类中的java注入始终为空   用户界面Java Swing自定义控件   java使用CompletableFutures递归地从同一函数的多个调用构建列表   在Java中将“.00”添加到整数BigDecimal   卡夫卡java未知\u主题\u或\u部分错误间歇性   java为什么我的getString()方法总是返回null?   java renameTo无法重命名文件   java为什么我可以强制转换对象?可以用其他对象来完成吗?   带有回写条件的java多根记录器   关于stackoverflow错误的java帮助?   java Websphere消息队列多线程   Java图形窗口/画布未垂直显示完整的六边形网格   java Sakai未在Tomcat服务器中启动