Flutter自动化控制插件autobot的使用

Flutter自动化控制插件autobot的使用

Pub autobot pub score pipeline/ci release status pipeline/ci delevop status dart supported platforms dart sdk version MIT-license

Autobot 是一个命令行模板引擎,用于自动化标准化和重复性操作,例如创建具有特定文件夹结构的新项目,或根据预定义的方案创建文件和类以确保符合架构规范。Autobot 还可用于通过在本地和 CI 中创建构建配置来配置项目。

安装

步骤 1:

安装 Dart,按照以下说明进行操作:

$ dart pub global activate autobot

步骤 2:

检查 autobot 版本以确认是否成功安装:

$ autobot version

配置

Autobot 需要一个 .autobot_config.yaml 文件。可以通过以下命令创建本地或全局配置文件:

创建本地配置文件(当前工作目录):

$ autobot init

在指定路径创建本地配置文件:

$ autobot init -p subfolder/subsubfolder/

创建全局配置文件(用户主目录):

$ autobot init -g

以下是一个包含所有可用配置的 .autobot_config.yaml 示例:

config:
  taskDir: some/relative_path/to_tasks_directory/

任务

运行 autobot 任务的命令如下:

# 假设 taskDir 中存在 my_task.yaml
$ autobot run --task my_task
# 使用 -t 简写快捷方式

也可以省略 run --task

$ autobot my_task

Autobot 任务是描述需要执行的操作的 YAML 文件。

通过使用 : 作为前缀传递标志给任务:

$ autobot my_task:first_flag:second_flag

Autobot 将标志分配给以下模式的键:flag<index>。这意味着第一个标志将被分配到 flag1,第二个标志将被分配到 flag2,依此类推。

可以为任务添加元数据,如名称和描述:

meta:
  name: 我的任务
  description: 这是我的 autobot 任务

使用 steps 来定义实际的工作:

meta:
  name: 我的任务
  description: 这是我的 autobot 任务

steps:
  - read:
      file: some/path/to/file.yaml

  - ask:
      key: name
      prompt: 你叫什么名字?

  - ask:
      key: age
      prompt: 你多大了?

  - write:
      file: some/path/output_file.txt
      content: 我的名字是 {{name}},我 {{age}} 岁。

可用步骤

检查所有可用步骤。请注意,除了 vars 外的所有步骤字段都可以作为动态自定义的 mustache 模板。有关更多详细信息,请查看示例。

ask

请求用户输入并将该输入分配给键:

- ask:
  key: 输入的键名
  prompt: 提示文字

command

运行 shell 命令:

- command:
  run: 要运行的 shell 命令

javascript

运行 JavaScript(注意:需要在命令行工具中安装 node):

- javascript:
  run: 要运行的 JavaScript 代码

read

读取 YAML 文件。数据可以在其他步骤(如 writejavascript)中使用:

- read:
  file: YAML 文件路径

runTask

运行子任务:

- runTask:
  file: 位于 .autobot_config.yaml 的 taskDir 中的任务文件名

vars

定义一些数据,可以在其他步骤(如 writejavascript)中使用:

- vars:
  key: 值
  dataArray: [a, b, c]
  dataMap:
    key: 值
    key2: 值2
  otherDataArray:
    - a
    - b
    - c
  someText: |
    Lorem ipsum...

write

写入文件:

- write:
  file: 文件路径
  enabled: 是否启用写入(true/false)
  writeMethod: 文件写入方式(默认为 keepExistingFile)
  extendAt: 扩展位置(top/bottom/custom regex)
  content: 文件内容

环境

Autobot 自动读取所有环境变量并将其提供给所有步骤。这非常有用,如果你想让 autobot 使用 CI 中的变量或将 autobot 集成到现有的流程或 CLI 命令中。

Autobot 和 CI

由于 CI 不支持交互式脚本,autobot 提供了通过参数设置输入值的功能,使用 -i--input

$ autobot run --task some_autobot_task --input userName=somename,userAge=23

这将跳过所有已设置值的交互式命令行提示。

示例

JavaScript 示例

steps:
  - ask:
    key: userName
    prompt: 你的名字是什么?

  - ask:
    key: userAge
    prompt: 你多大了?

  - javascript:
    run: |
      // 访问 userName 的值
      var userName = autobot.variables.userName;
      // 如果 userName 为空,则设置默认值
      if (!userName || userName.length === 0) {
        autobot.variables.userName = 'Some fallback name';
      }
      // 定义一个新的变量
      autobot.variables.varFormJs = 'Hello!';

  - write:
    file: some/relative/path.txt
    content: Hi {{userName}}

  - write:
    file: /some/non_relative/path.txt
    content: |
      Hi {{userName}},
      是不是真的你 {{userAge}} 岁?
      这是从 JavaScript 获取的值: {{varFormJs}}

此任务会询问用户的姓名和年龄,并创建两个文件:

  • 第一个文件为 $pwd/some/relative/path.txt,内容如下:
    Hi Peter
    
  • 第二个文件为 /some/non_relative/path.txt,内容如下:
    Hi Peter,
    是不是真的你 30 岁?
    这是从 JavaScript 获取的值: Hello!
    

Read 示例

假设机器上有一个名为 task_data.yaml 的 YAML 文件,内容如下:

key1: value1
key2: value2

varMap:
  mapKey1: mapValue1
  mapKey2: mapValue2

varList:
  - key: a
  - key: b
  - key: c

任务如下:

steps:
  - read:
      file: task_data.yaml

  - write:
      file: output.txt
      content: |
        Pairs: {{key1}}, {{key2}}
        Map pairs: {{varMap.mapKey1}} {{varMap.mapKey2}}
        List:
        {{#varList}}
          -> {{key}} <-
        {{/varList}}

此任务将读取 task_data.yaml 并生成以下文件内容:

Pairs: value1, value2
Map pairs: mapValue1 mapValue2
List:
-> a <-
-> b <-
-> c <-

更多关于Flutter自动化控制插件autobot的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自动化控制插件autobot的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


autobot 是一个用于 Flutter 的自动化控制插件,旨在帮助开发者自动化测试和操作 Flutter 应用。它可以模拟用户交互、检查 UI 状态、执行断言等操作,类似于其他 UI 自动化测试框架,但专门为 Flutter 设计。

以下是如何使用 autobot 插件的基本步骤和示例:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 autobot 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  autobot: ^latest_version

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的测试文件中导入 autobot 包:

import 'package:autobot/autobot.dart';

3. 编写自动化测试

你可以使用 autobot 来编写自动化测试脚本。以下是一个简单的示例,展示了如何自动化点击按钮并验证文本:

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:autobot/autobot.dart';

void main() {
  testWidgets('Automated button click and text verification', (WidgetTester tester) async {
    // 构建一个简单的 Flutter 应用
    await tester.pumpWidget(MaterialApp(
      home: Scaffold(
        body: Center(
          child: Column(
            children: [
              Text('Hello, World!'),
              ElevatedButton(
                onPressed: () {
                  // 按钮点击后的操作
                },
                child: Text('Click Me'),
              ),
            ],
          ),
        ),
      ),
    ));

    // 使用 autobot 查找按钮并点击
    await autobot.tap(find.text('Click Me'));

    // 验证文本是否正确显示
    await autobot.expect(find.text('Hello, World!'), findsOneWidget);
  });
}

4. 运行测试

你可以使用 flutter test 命令来运行你的自动化测试:

flutter test
回到顶部