为什么 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()