跳到内容

参数以一种与 Python 方法工作方式基本一致的方式传递给步骤

  • 命名参数被放入等效的简化变量中(例如,“多少次” -> “how_many_times”) - 在下面的 click 步骤中演示。
  • 如果方法具有 **kwargs,则 kwargs 的键名将与命名参数完全匹配 - 在下面的 fill_form 步骤中演示。

@validate 用于 StrictYAML 验证器 来验证步骤的类型。您可以在 强类型 中了解更多关于此的信息。

代码示例

engine.py

from code_that_does_things import *
from strictyaml import Int, Str, Bool
from hitchstory import BaseEngine, validate

class Engine(BaseEngine):
    def fill_form(self, **kwargs):
        for name, content in kwargs.items():
            fill_form(name, content)

    @validate(what=Str(), how_many_times=Int(), double_click=Bool())
    def click(self, what, how_many_times=1, double_click=False):
        for _ in range(how_many_times):
            click(what)

带代码

from hitchstory import StoryCollection
from engine import Engine
from pathlib import Path

kwargs

example.story

Login:
  steps:
    - Fill form:
        login username: john
        login password: hunter2
StoryCollection(Path(".").glob("*.story"), Engine()).named("Login").play()

将输出

RUNNING Login in /path/to/working/example.story ... SUCCESS in 0.1 seconds.

然后,表单将使用以下内容填充

  • login username: john

  • login password: hunter2

可选参数单个参数

example.story

Click button:
  steps:
    - Click: my button
StoryCollection(Path(".").glob("*.story"), Engine()).named("Click button").play()

将输出

RUNNING Click button in /path/to/working/example.story ... SUCCESS in 0.1 seconds.

可选参数少于最大参数

example.story

Click button:
  steps:
    - Click:
        what: my button
        how many times: 2
StoryCollection(Path(".").glob("*.story"), Engine()).named("Click button").play()

将输出

RUNNING Click button in /path/to/working/example.story ... SUCCESS in 0.1 seconds.

可执行规范

arguments.story storytests 自动生成的文档。