首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bespoken代码覆盖自托管Alexa技巧,用Python编写(水瓶)

Bespoken代码覆盖自托管Alexa技巧,用Python编写(水瓶)
EN

Stack Overflow用户
提问于 2020-07-07 11:00:44
回答 1查看 134关注 0票数 1

我正在使用Python的ask-sdk编写用Python编写的Alexa技能。这个技能是在一个听5000端口的烧瓶服务器上运行的。现在我想集成使用Bespoken框架的单元测试。

我的testing.json文件如下所示:

代码语言:javascript
复制
{

    "locales": "de-DE",
    "interactionModel": "models/de-DE.json",
    "trace": true,
    "jest": {
        "silent": true
    },
    "skillURL": "http://localhost:5000"
}

我正在本地运行一个在端口9998上的http.server来获取report.html。测试成功通过,但代码覆盖率不能正常工作。在这种技能中使用的文件似乎根本不被识别。相反,他们正在查找文件slides.js,debugger.js,jquery.js

代码语言:javascript
复制
-----------------------------------------|----------|----------|
File                                     |  % Stmts | % Branch | 
-----------------------------------------|----------|----------|
All files                                |        0 |        0 | 
 docutils/writers/s5_html/themes/default |        0 |        0 | 
  slides.js                              |        0 |        0 |     ...
 werkzeug/debug/shared                   |        0 |        0 | 
  debugger.js                            |        0 |        0 | 
  jquery.js                              |        0 |        0 |
-----------------------------------------|----------|----------|

Test Suites: 1 passed, 1 total
Tests:       11 passed, 11 total
Snapshots:   0 total
Time:        9.475s

我遵循了这个指南https://read.bespoken.io/cli/tutorials/tutorial-flask-ask-python/#getting-started

因此,我查找了常见问题并从https://read.bespoken.io/unit-testing/faq/#what-are-continuous-integration-ci-and-automated-unit-testing获得了这些信息。

可以用Javascript以外的编程语言编写单元测试技能吗?是的,你可以.它确实需要在您的笔记本电脑上本地运行服务器,我们的库可以调用它,但否则它就会“正常工作”。

在运行测试之前,启动服务器以接收有效负载。它将监听类似于:http://localhost:9000的内容。

在skillURL配置元素中设置testing.json文件中的URL。应该设置它,而不是处理程序元素--处理程序只使用Javascript lambdas/函数。

在测试运行之后,关闭服务器--我们建议将其作为常规进程的一部分。它可以添加到我们的过滤器之一,例如-阅读这里的过滤器XXX。最后,如果对请求执行请求签名检查或时间戳筛选,则需要禁用此功能。

这是我的app.py:

代码语言:javascript
复制
SB = SkillBuilder()
app = Flask(__name__)

app.config.setdefault(VERIFY_SIGNATURE_APP_CONFIG, False)
id = "XXXX"
skill_obj = SB.create()


webservice_handler = WebserviceSkillHandler(skill=skill_obj)
webservice_handler.verify_signture = False


skill_adapter = SkillAdapter(skill=skill_obj, skill_id=id, app=app)

skill_adapter.VERIFY_SIGNATURE_APP_CONFIG = False

skill_adapter.register(app=app, route="/")



if __name__ == '__main__':

    if 'ASK_VERIFY_REQUESTS' in os.environ:
        verify = str(os.environ.get('ASK_VERIFY_REQUESTS', '')).lower()
        if verify == 'false':
            app.config['ASK_VERIFY_REQUESTS'] = False
    app.run(host='0.0.0.0', port=5000, debug=True)

我对任何想法都很感激!

EN

回答 1

Stack Overflow用户

发布于 2020-07-08 07:15:46

不需要在端口9998上运行本地服务器。必须允许端口5000上的post方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62773772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档