为什么 hitchstory 没有命令行界面?

我发现其他测试框架的主要缺点之一是,在运行哪些测试、如何运行它们、以什么顺序以及如何运行它们方面缺乏灵活性。

此外,我几乎总是最终创建非常复杂的代码来调用测试,并以我想要的方式和顺序运行它们。

HitchStory 抢先一步,要求你编写代码来运行你的测试。它可能只是一行代码,但由于代码只有一行,而且是代码,所以它是一个高度可配置的一行代码,可能会被修改。

此外,HitchStory 旨在在一个单独的代码环境(虚拟环境)中运行。使用它的自然方式是使用 hitchkey,它负责设置虚拟环境、安装所有必要的测试包(包括 hitchstory)、使它们保持最新,以及提供一个易于访问的目录来放置构建制品。

这个项目 运行单个测试的 hitchkey key.py 代码示例

@expected(HitchStoryException)
def bdd(*keywords):
    """
    Run story matching keywords.
    """
    settings = _personal_settings().data
    _storybook(settings["engine"]).with_params(
        **{"python version": settings["params"]["python version"]}
    ).only_uninherited().shortcut(*keywords).play()

使用 python 2.7 和 3.7 进行 lint、运行所有 doctests 和所有故事的 hitchkey key.py 代码示例

@expected(HitchStoryException)
def regression():
    """
    Run regression testing - lint and then run all tests.
    """
    lint()
    doctests()
    storybook = _storybook({}).only_uninherited()
    storybook.with_params(**{"python version": "2.7.14"}).filter(
        lambda story: not story.info.get("fails_on_python_2")
    ).ordered_by_name().play()
    storybook.with_params(**{"python version": "3.7.0"}).ordered_by_name().play()

重写模式 下运行单个测试的 hitchkey key.py 代码示例

@expected(HitchStoryException)
def rbdd(*keywords):
    """
    Run story matching keywords and rewrite story if code changed.
    """
    settings = _personal_settings().data
    settings["engine"]["rewrite"] = True
    _storybook(settings["engine"]).with_params(
        **{"python version": settings["params"]["python version"]}
    ).only_uninherited().shortcut(*keywords).play()