如何使用botium或testmybot节点包测试聊天机器人?

我找不到任何端到端的样本来理解这一点。

最佳答案

Github存储库中包含TestmybotBotium的几个示例。

Botium Wiki包含一些有用的信息和Walkthrough

运行Botium脚本的基本步骤如下(来自one of the samples

安装要求


安装Node.js
安装泊坞窗
安装docker-compose


还有其他不需要docker的示例。

初始化Botium目录

打开命令行窗口,创建目录,初始化NPM并下载Botium软件包。

mkdir botium
cd botium
npm init
npm install --save botium-core


加载botium库

首先,加载botium库和所需的类。

const BotDriver = require('botium-core').BotDriver
const Capabilities = require('botium-core').Capabilities
const Source = require('botium-core').Source


配置功能

告诉Botium正在测试哪种聊天机器人,以及如何连接到它。在此示例中,应该将chatbot加载到docker容器中,并且Botium必须挂接到Microsoft Bot Framework中。

const driver = new BotDriver()
    .setCapability(Capabilities.PROJECTNAME, 'core-CreateNewConversation')
    .setCapability(Capabilities.CONTAINERMODE , 'docker')
    .setCapability(Capabilities.BOTFRAMEWORK_API, true)
    .setCapability(Capabilities.BOTFRAMEWORK_APP_ID, 'my microsoft app id')
    .setCapability(Capabilities.BOTFRAMEWORK_CHANNEL_ID, 'facebook')


配置聊天机器人存储库

Botium直接从源Github存储库中检索chatbot代码。或者,可以先克隆存储库,然后从本地目录加载该存储库。在CI环境中,从Git加载通常更有意义。
另外,要运行示例chatbot,还需要初始化Git存储库的命令(“ npm install”),启动chatbot服务的命令(“ npm start”)和一些环境变量。

driver.setSource(Source.GITURL, 'https://github.com/Microsoft/BotBuilder-Samples.git')
    .setSource(Source.GITDIR, 'Node/core-CreateNewConversation')
    .setSource(Source.GITPREPARECMD, 'npm install')
    .setCapability(Capabilities.STARTCMD, 'npm start')
    .setEnv('MICROSOFT_APP_ID', 'my microsoft app id')
    .setEnv('MICROSOFT_APP_PASSWORD', 'my microsoft app password')
    .setEnv('NODE_DEBUG', 'botbuilder')
    .setEnv('DEBUG', '*')


进行对话并评估回应

t提供“ fluent interface”。

首先,初始化Botium驱动程序(创建工作目录,下载存储库,构建docker网络,...)并启动。

driver.BuildFluent()
    .Start()
    ...


然后,通过将输入发送到聊天机器人(“ UserSaysText”)或等待来自聊天机器人的响应(“ WaitBotSaysText”)来开始对话。对话是针对使用中的聊天机器人量身定制的。如果chatbot没有反应或显示出意外反应,对话将立即结束。

...
.UserSaysText('hi bot')
.WaitBotSaysText((text) => assert('You\'ve been invited to a survey! It will start in a few seconds...', text))
.WaitBotSaysText(null, 10000, (text) => assert('Hello... What\'s your name?', text))
.UserSaysText('John')
.WaitBotSaysText((text) => assert('Hi John, How many years have you been coding?', text))
.UserSaysText('5')
.WaitBotSaysText((text) => assert('What language do you code Node using?', text))
.UserSaysText('CoffeeScript')
.WaitBotSaysText((text) => assert('Got it... John you\'ve been programming for 5 years and use CoffeeScript.', text))
...


最后,停止Botium并执行一些清理任务。
不要忘记“ Exec”调用,否则将什么也不执行!

...
.Stop()
.Clean()
.Exec()
...


运行程序并观察输出

现在,像往常一样在命令行窗口中运行该程序。

[ec2-user@ip-172-30-0-104 botframework]$ node botiumFluent.js
SUCCESS: Got Expected <You've been invited to a survey! It will start in a few seconds...>
SUCCESS: Got Expected <Hello... What's your name?>
SUCCESS: Got Expected <Hi John, How many years have you been coding?>
SUCCESS: Got Expected <What language do you code Node using?>
SUCCESS: Got Expected <Got it... John you've been programming for 5 years and use CoffeeScript.>
READY
[ec2-user@ip-172-30-0-104 botframework]$


TestMyBot

Botium与Selenium / Appium所做的工作相当(统一的API和“页面对象模型”)。 TestMyBot是Botium之上的一层,用于将Botium与CI / CD管道以及Mocha和Jasmine等测试运行程序集成。对话不必如上所述进行编码,而是在文本文件,excel文件或yml文件中“编写”,例如:

调查

#me
hi

#bot
You've been invited to a survey! It will start in a few seconds...

#bot
Hello... What's your name?

#me
John

#bot
Hi John, How many years have you been coding?

#me
10

#bot
What language do you code Node using?

#me
C#

#bot
I didn't understand. Please choose an option from the list.

#me
JavaScript

#bot
Got it... John you've been programming for 10 years and use JavaScript.


所有这些文件都必须放置在spec / convo目录中,而Jasmine或Mocha(或任何其他测试运行程序)的测试用例只需一个简短的脚本(即放在spec / testmybot.spec中)就可以即时创建。 .js):

const bot = require('testmybot');

bot.helper.jasmine().setupJasmineTestSuite(60000);


了解茉莉或摩卡咖啡确实有帮助。正确设置后,唯一要运行的命令是:

npm run test

07-28 09:34