我正在使用Python的ask-sdk编写用Python编写的Alexa技能。这个技能是在一个听5000端口的烧瓶服务器上运行的。现在我想集成使用Bespoken框架的单元测试。
我的testing.json文件如下所示:
{
"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
-----------------------------------------|----------|----------|
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:
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)我对任何想法都很感激!
发布于 2020-07-08 07:15:46
不需要在端口9998上运行本地服务器。必须允许端口5000上的post方法。
https://stackoverflow.com/questions/62773772
复制相似问题