2017-02-12 4 views
7

Ich entwickle eine Alexa-Fähigkeit in Knoten und ich würde gerne wissen, wie ich meinen Code Unit-Test. Ich benutze das alexa sdk, das Amazon veröffentlicht hat.Unit testing Alexa Fähigkeit, die alexa-sdk verwendet

Ich habe viele Bibliotheken gefunden, um dies zu erreichen, aber sie scheinen entwickelt zu werden, bevor die Alexa SDK verfügbar war.

Vielen Dank im Voraus.

Antwort

5

Wir haben unsere Alexa Emulator speziell für die Zwecke der die einfachen Komponententests und Funktionsprüfung von Alexa Fähigkeiten gebaut:
http://docs.bespoken.tools/en/latest/tutorials/tutorial_bst_emulator_nodejs/

Mit ihm können Sie Anrufe wie diese machen:

alexa.launched(function (error, response) { 
    alexa.spoken('About the podcast', function (error, response) { 
     assert.equal(response.response.outputSpeech.ssml, '<speak> Some SSML </speak>'); 
     done(); 
    }); 
}); 

Dieser Testcode imitiert einen Benutzer, der die Fertigkeit startet und "Über den Podcast" sagt. Diese Interaktionen werden automatisch in die richtigen Alexa JSON-Anfragen übersetzt, die wiederum an Ihren Skill-Code gesendet werden.

Sie können auch komplexere Komponententests erstellen, die darauf basieren, den internen Status des Alexa-Geräts über Interaktionen nachzuahmen. Diese sind im Tutorial beschrieben.

0

lex-bot-tester unterstützt ist ein Framework und Werkzeug Konversations Tests für Amazon Alexa und Lex zu erstellen.

Anstatt eine simulierte Version des Skill zu verwenden, verwendet es die vorhandene SMAPI, um mit Alexa umzugehen.

Die Tests können manuell erstellt oder automatisch von einem mitgelieferten Tool namens urutu generiert werden. Derzeit ist die Codegenerierung python, aber die Skill-Implementierung kann in jeder unterstützten Sprache erfolgen.

Nachdem Sie mit der Fähigkeit von der Kommandozeile in Wechselwirkung treten, das Gespräch zu definieren, sieht der generierte Code wie dieser

#! /usr/bin/env python 
import sys 
import unittest 

from lex_bot_tester.aws.alexa.alexaskilltest import AlexaSkillTest 

verbose = True 

class GeneratedTests(AlexaSkillTest): 
    def test_book_my_trip_reserve_car(self): 
     """ 
     Test generated by urutu on 2018-02-21 01:24:51 
     """ 
     skill_name = 'BookMyTripSkill' 
     intent = 'BookCar' 
     conversation = [{'slot': None, 'text': 'ask book my trip to reserve a car', 'prompt': None}, 
         {'slot': 'CarType', 'text': 'midsize', 
         'prompt': 'What type of car would you like to rent, Our most popular options are economy, midsize, and luxury'}, 
         {'slot': 'PickUpCity', 'text': 'vancouver', 
         'prompt': 'In what city do you need to rent a car?'}, 
         {'slot': 'PickUpDate', 'text': 'tomorrow', 
         'prompt': 'What day do you want to start your rental?'}, 
         {'slot': 'ReturnDate', 'text': 'next week', 
         'prompt': 'What day do you want to return the car?'}, 
         {'slot': 'DriverAge', 'text': '25', 'prompt': 'How old is the driver for this rental?'}] 
     simulation_result = self.conversation_text(skill_name, intent, conversation, verbose=verbose) 
     self.assertSimulationResultIsCorrect(simulation_result, verbose=verbose) 

if __name__ == '__main__': 
    unittest.main() 

Es gibt eine ausführlichere Erklärung und einige Videos bei Testing Alexa Skills — Autogenerated tests.