录制第一个自动化脚本
本篇以 Windows 录制功能为例,详细介绍从项目创建到脚本录制和回放的整个过程。对于其它类型应用的录制(如:Qt、Java、ATK、Electron、Web),方法和步骤也与此相同。
一、创建一个新项目
- 打开 CukeTest 客户端,你会看到一个欢迎页面。在页面上,点击 新建项目 按钮。
- 接下来,为你的项目命名。比如,你可以输入
notepad-test
,这是一个我们将要录制的简单记事本自动化测试项目。 - 在项目模板选项中,选择 Windows 模板。语言可以选择使用你熟悉的编程语言:
JavaScript
或Python
。 点击 浏览 按钮选择项目保存的位置,然后点击 创建。
创建完成后,CukeTest会自动打开该项目。
二、录制你的自动化脚本
1. 设置录制参数
在 CukeTest 主界面的工具栏上,你会看到一个录制按钮。点击录制按钮旁边的小箭头,进入录制设置界面。这里你需要选择 Windows 录制模式。
- 在 应用程序路径 输入框中,填写要测试的应用程序路径。例如,记事本的默认路径是:
C:\Program Files\LeanPro\CukeTest\bin\notepad.exe
。 其他设置可以保持默认,不需要修改。
2. 开始录制
点击 录制 按钮,CukeTest 会自动启动 notepad.exe
。此时,你在被测应用中的所有操作(比如点击、输入内容)都会被自动记录下来。
提示: 录制功能非常直观,你的每一步操作都会被捕捉并生成脚本。记得按顺序执行操作,这样录制的脚本会更加连贯。
3. 执行测试操作
根据测试场景,手动完成以下操作:
- 打开记事本应用。
- 在编辑区输入 “Hello CukeTest!”。
- 检查输入的文字是否正确。
- 修改字体大小为36。
- 检查字体是否修改成功。
- 关闭记事本应用。
录制的过程中,CukeTest 会自动生成对应的操作脚本。
4. 添加检查点
录制过程中,我们通常需要验证操作是否成功,比如输入的文字是否正确,字体是否修改成功。这些验证点称为检查点。我们需要为上述操作添加两个检查点:
如何快速打开检查点对话框
在录制时,你可以按住
Alt
键并右击你想要验证的控件。这样可以快速打开检查点对话框,或者你可以通过录制工具栏上的检查点按钮来添加检查点。添加第一个检查点
第一个检查点用于验证
QTextEdit
文本编辑控件中的文字内容。我们希望确认文本是否为Hello CukeTest!
。- 在属性检查点中,选择
Text.text
属性。 - 确认其值为
Hello CukeTest!
后,点击确认
按钮。系统会自动生成以下脚本:
- 在属性检查点中,选择
await model.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")
modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")
添加第二个检查点
第二个检查点用于验证字体是否修改成功。这里我们可以使用图像检查点功能来验证控件的外观。
- 在检查点对话框中,切换到 图像检查点 标签页。
- 勾选需要检查的图片,点击
确认
,系统会自动生成脚本:
await modelWin.getVirtual("QTextEdit_image").checkImage();
modelWin.getVirtual("QTextEdit_image").checkImage()
通过这些检查点,可以确保脚本运行时每一步操作都得到了验证。
提示: 检查点可以大大提高测试的准确性。属性检查点用来验证控件的某些属性(如文本),而图像检查点用来验证控件外观。
5. 完成录制
当你完成所有操作后,关闭记事本,并点击 CukeTest 工具栏中的 停止 按钮,结束录制。录制完成后,CukeTest 会自动生成对应的测试脚本。
三、回放录制的脚本
录制完成后,需要通过回放来验证脚本是否正确。
- 执行脚本:在 CukeTest 中,点击 运行脚本 按钮,CukeTest 会开始执行刚刚录制的自动化脚本。你可以看到被测应用被自动启动,所有步骤会依次执行。
- 检查回放效果:观察回放过程中,是否每一步操作都正确执行。如果出现任何异常,你可以对录制的脚本进行微调。
- 调整操作速度:脚本回放时可能有点慢,这是因为默认启用了“慢动作”模式。你可以通过修改脚本中的
slowMo
参数来加快速度。将其设为0
,即可让自动化测试以最快速度运行。
示例脚本
下面是CukeTest录制生成的脚本示例:
const { RunSettings, Util } = require("leanpro.common");
const { WinAuto } = require("leanpro.win");
(async () => {
await RunSettings.set({slowMo: 1000, reportSteps: true});
let modelWin = WinAuto.loadModel(__dirname + "/recording.tmodel");
//启动应用 "notepad.exe"
await Util.launchProcess("C:\\Program Files\\LeanPro\\CukeTest\\bin\\notepad.exe");
//设置控件值为 "Hello CukeTest!"
await modelWin.getEdit("QTextEdit").set("Hello CukeTest!");
//检查属性
await modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!");
//点击 "Font"
await modelWin.getButton("Font").click();
//选择列表项 "36"
await modelWin.getList("QFontListView").select("36");
//点击 "OK"
await modelWin.getButton("OK").click();
//检查截屏图片
await modelWin.getVirtual("QTextEdit_image").checkImage();
//点击 "关闭"
await modelWin.getButton("关闭").click();
})();
import os
from leanproAuto import RunSettings, WinAuto, Util
def recording():
RunSettings.set({"slowMo": 1000, "reportSteps": True})
modelWin = WinAuto.loadModel(os.path.dirname(os.path.realpath(__file__)) + "/recording.tmodel")
#启动应用 "notepad.exe"
Util.launchProcess("C:\\Program Files\\LeanPro\\CukeTest\\bin\\notepad.exe")
#设置控件值为 "Hello CukeTest!"
modelWin.getEdit("QTextEdit").set("Hello CukeTest!")
#检查属性
modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")
#点击 "Font"
modelWin.getButton("Font").click()
#选择列表项 "36"
modelWin.getList("QFontListView").select("36")
#点击 "OK"
modelWin.getButton("OK").click()
#检查截屏图片
modelWin.getVirtual("QTextEdit_image").checkImage()
#点击 "关闭"
modelWin.getButton("关闭").click()
if __name__ == "__main__":
recording()
四、整合自动化测试用例与代码
在录制生成的文件中,除了脚本文件,你还会看到一个 .tmodel
文件和一个同名文件夹。录制过程中,CukeTest 会自动将所有涉及的控件信息保存到这些模型文件中,使我们可以复用这些控件的信息,提升脚本的灵活性和可维护性。
为了让自动化测试更高效、更具可扩展性,我们通常需要将这些录制脚本与测试框架整合在一起,形成一个完整的测试项目。CukeTest 支持多种测试框架,你可以根据实际需求选择适合的框架:
- 编写测试场景文件:创建描述性场景,让测试内容更直观。
- 使用 JavaScript 开发 BDD 项目:适合 BDD(行为驱动开发)测试的场景。
- 使用 Python 开发 BDD 项目:在熟悉 Python 的环境中构建 BDD 项目。
- 开发 pytest 项目:面向 Python 用户的经典测试框架。
将录制的脚本转换为场景文件
CukeTest 还提供了录制脚本转换成场景的功能,帮助你快速将录制的 JavaScript 或 Python 脚本转换为符合 Cucumber 和 pytest-bdd 语法的场景文件和步骤定义文件。这种转换方式可以省去部分手动编写的工作,帮助你直观地了解 Cucumber 和 pytest-bdd 的语法,让 BDD 测试更容易上手。
通过以上步骤,您已经完成了第一个自动化脚本的录制和初步整合。随着熟练度的提升,你可以尝试更复杂的测试用例设计。