{
"info": {
"author": "Carlos Rodriguez",
"author_email": "crodriguez1a@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 2 - Pre-Alpha",
"Environment :: Web Environment",
"Framework :: Django",
"Framework :: Django :: 2.0",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Topic :: Internet :: WWW/HTTP"
],
"description": "[Interview Alexa](https://github.com/crodriguez1a/interview-alexa)\n===============\n\nA Python Testing Framework for Alexa using ASK CLI\n\n\nInstallation:\n\n```bash\npip install interview-alexa\n```\n\nTypical usage:\n\n```python\nimport unittest\nfrom interview_alexa import say\n\n\nclass TestingAllTheThings(unittest.TestCase):\n\n @say('open my skill')\n def test_launch_intent(self, result):\n self.assertEqual(result, 'My expected result')\n\nif __name__ == '__main__':\nunittest.main()\n```\n\nPrerequisites\n=============\n\n* Install ``node``\n * \n\n* Install and initialize ``ask-cli``\n\t* \n\n \tnpm install -g ask-cli\n \task init\n\n* Follow the ``ask-cli`` prompts\n\n* Export environment variables:\n\n```bash\nexport SKILL_ID=amzn1.ask.skill.12345\nexport ASK_DEFAULT_DEVICE_LOCALE=en-US\n```\n\n* Clone your existing Alexa skill:\n\n```bash\nask clone echo SKILL_ID\n```\n\n\nUsage\n=====\n\nInside the directory of your cloned skill, create a file called ``tests.py``\n\n```bash\nproject\n\u2502\n\u2514\u2500\u2500\u2500My_Cloned_Skill\n\t\u2502\n\t\u2514\u2500\u2500\u2500tests.py\n```\n\n**Writing Tests:**\n\n```python\nimport unittest\nfrom interview_alexa import say\n\n\nclass TestingAllTheThings(unittest.TestCase):\n\n @say('open my skill')\n def test_launch_intent(self, result):\n self.assertEqual(result, \"My expected result\")\n\nif __name__ == '__main__':\n unittest.main()\n```\n\n**Options:**\n\n- **`debug=True`**\n\n```python\n@say('open my skill', debug=True)\ndef test_launch_intent(self, result):\n self.assertEqual(result, \"My expected result\")\n\n # => will produce a verbose output from ask-cli\n```\n\n**Simple Testing**:\n\n```bash\ncd My_Skill\npython tests.py\n```\n\n--\n```bash\nA passing test would output something like:\n\n\u2713 Simulation created for simulation id: 1234-5679-910112-abc-123\n\u25e0 Waiting for simulation response.\n----------------------------------------------------------------------\nRan 1 test in 5.848s\n\nOK\n```\n\n**Dialog Testing**\n\nSince the Python test runner executes tests alphabetical by test name, you'll want to ensure that any tests that simulate dialog are named alphabetically.\n\n```python\n@say('open my skill')\ndef test_aa__begin_dialog(self, result):\n self.assertEqual(result, \"My expected result\")\n\n@say('do something with my skill')\ndef test_ab__continue_dialog(self, result):\n self.assertEqual(result, \"My expected result\")\n```\n\nIf the expected result is a delegated dialog, your response may not include any output speech. In that case, you may want to ``pass``:\n\n```python\n@say('do something with my skill')\ndef test_ac__delegated_dialog(self, result):\n pass\n```\n\n**Local Testing**\n\nThis package takes advantage of a another great package called ``python-lambda-local`` to run tests locally.\n\n```bash\npip install python-lambda-local\n```\n\nIn order to do so, we use ``ask-cli`` to record your request events, and ``python-lambda-local`` to test against recorded events.\n\nFirst, make sure to import the record and localize functions. Then run record in your tests module's ``setUp`` method:\n\n```python\nimport unittest\nfrom interview_alexa import say, record, localize\n\n\nclass TestingAllTheThings(unittest.TestCase):\n\n def setUp(self):\n record(self)\n\n @say('open my skill')\n def test_aa__launch_intent(self, result):\n self.assertEqual(result, 'My expected result')\n\n...\n```\n\nOnce you've run your test with **record mode** on, you should see a ``tmp`` folder in your working directory with some JSON files with the same names as your tests.\n\n```bash\nproject\n\u2502\n\u2514\u2500\u2500\u2500My_Cloned_Skill\n\t\u2502\n\t\u2514\u2500\u2500\u2500tests.py\n\t\u2502\n\t\u2514\u2500\u2500\u2500tmp\n\t \u2502\n\t \u2514\u2500\u2500\u2500__main__.TestingAllTheThings.test_aa.json\n```\n\nNow that you have some events recorded locally, you can run your tests in **localize mode**, and run your tests again with ``python tests.py`` as you normally would.\n\n```python\nimport unittest\nfrom interview_alexa import say, record, localize\n\n\nclass TestingAllTheThings(unittest.TestCase):\n\n def setUp(self):\n # record(self)\n localize(self, 'path/to/lambda/handler.py') # Default is lambda/custom/handler.py\n\n...\n```\n\n\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/crodriguez1a/interview-alexa",
"keywords": "",
"license": "BSD",
"maintainer": "",
"maintainer_email": "",
"name": "interview-alexa",
"package_url": "https://pypi.org/project/interview-alexa/",
"platform": "",
"project_url": "https://pypi.org/project/interview-alexa/",
"project_urls": {
"Homepage": "https://github.com/crodriguez1a/interview-alexa"
},
"release_url": "https://pypi.org/project/interview-alexa/0.1.5/",
"requires_dist": null,
"requires_python": ">=3.6",
"summary": "A Python Testing Framework for Alexa Skills using ASK CLI",
"version": "0.1.5"
},
"last_serial": 3726170,
"releases": {
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "7d3c8782f1c62f7116ed41e109c50e66",
"sha256": "b54722aa6be40238937ee64b44212bf79c70a609afde50a45284be58aa448423"
},
"downloads": -1,
"filename": "interview_alexa-0.1.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7d3c8782f1c62f7116ed41e109c50e66",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 5416,
"upload_time": "2018-03-30T13:35:12",
"url": "https://files.pythonhosted.org/packages/10/fb/63b709437469f11a889fb20c98bfdf84393c8ce23575e423eba94f974343/interview_alexa-0.1.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ba0badbd21de8a47484c8dec7e2308fc",
"sha256": "8340684b9a385738ede1de7a36d818849ff6c76e2f7020ae325162dde6e7c373"
},
"downloads": -1,
"filename": "interview-alexa-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "ba0badbd21de8a47484c8dec7e2308fc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 5704,
"upload_time": "2018-03-30T13:35:14",
"url": "https://files.pythonhosted.org/packages/cd/8b/4a5e2ecce0d484a6329bc32546f875642283cb35ffb93f6ff1aee02cf302/interview-alexa-0.1.0.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "85b4cfc760d14b2ff72ca3f33079b04f",
"sha256": "d2a4375af898ad917af6adf203356aab8fc5b0105cb3399680f64a7fa50c8102"
},
"downloads": -1,
"filename": "interview_alexa-0.1.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "85b4cfc760d14b2ff72ca3f33079b04f",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 8317,
"upload_time": "2018-03-30T13:50:42",
"url": "https://files.pythonhosted.org/packages/3d/ba/81ec76506c1dc775b075b7f2448149b75fceb6273b3d4ccb890e023f2f1c/interview_alexa-0.1.1-py2.py3-none-any.whl"
}
],
"0.1.2": [
{
"comment_text": "",
"digests": {
"md5": "aa7e3750e3e0c60b55b51fae7c408a41",
"sha256": "6beecab1472f5248c8a4082c4093e13e2b5b84ee933fcd31d4d76ff46414f6f8"
},
"downloads": -1,
"filename": "interview_alexa-0.1.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "aa7e3750e3e0c60b55b51fae7c408a41",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 8311,
"upload_time": "2018-03-30T13:56:01",
"url": "https://files.pythonhosted.org/packages/c5/a3/2db0489fef84f817ee62a1c5d67e41e97885738dce9209396aadd0b45215/interview_alexa-0.1.2-py2.py3-none-any.whl"
}
],
"0.1.4": [
{
"comment_text": "",
"digests": {
"md5": "48ea941746a41aa0b8f6822982688255",
"sha256": "0eacf357378ac8f6ae180aacdb35e11120fbde0e7f12d79fb74d6991512bed04"
},
"downloads": -1,
"filename": "interview_alexa-0.1.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "48ea941746a41aa0b8f6822982688255",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 8390,
"upload_time": "2018-03-30T18:55:08",
"url": "https://files.pythonhosted.org/packages/7e/71/89e6435e993bfb97a32633dac3f0cdac999c7d68bba2f3c74f05074e9bc8/interview_alexa-0.1.4-py2.py3-none-any.whl"
}
],
"0.1.5": [
{
"comment_text": "",
"digests": {
"md5": "a2307197a8c3213b16c25f3ef58b19aa",
"sha256": "1fe9d4244e483dc70386c6fc9766a5b1fcd027a86e9228d8cc5785836218fbac"
},
"downloads": -1,
"filename": "interview_alexa-0.1.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "a2307197a8c3213b16c25f3ef58b19aa",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 8543,
"upload_time": "2018-04-02T12:24:12",
"url": "https://files.pythonhosted.org/packages/60/19/7ee425a5bb514167b7c5e79ccf19807c74886324723c63bf1750b766e026/interview_alexa-0.1.5-py2.py3-none-any.whl"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "a2307197a8c3213b16c25f3ef58b19aa",
"sha256": "1fe9d4244e483dc70386c6fc9766a5b1fcd027a86e9228d8cc5785836218fbac"
},
"downloads": -1,
"filename": "interview_alexa-0.1.5-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "a2307197a8c3213b16c25f3ef58b19aa",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.6",
"size": 8543,
"upload_time": "2018-04-02T12:24:12",
"url": "https://files.pythonhosted.org/packages/60/19/7ee425a5bb514167b7c5e79ccf19807c74886324723c63bf1750b766e026/interview_alexa-0.1.5-py2.py3-none-any.whl"
}
]
}