Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save etng/7a327fd9284ea18ffd38097cb1eabf3a to your computer and use it in GitHub Desktop.
Save etng/7a327fd9284ea18ffd38097cb1eabf3a to your computer and use it in GitHub Desktop.
Example of how to use unittest in IPython or Jupyter
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example of how to use unittest in IPython or Jupyter\n",
"\n",
"Configuration for runnint unittest in IPython or Jupyter is different than running unittest from command line. \n",
"\n",
"When you run following code from IPython or Jupyter\n",
"\n",
"```python\n",
"if __name__ == '__main__':\n",
" unittest.main()\n",
"```\n",
"\n",
"will result in following error:\n",
"\n",
"```\n",
"E\n",
"======================================================================\n",
"ERROR: C:\\Users\\XXXX\\AppData\\Roaming\\jupyter\\runtime\\kernel-4b12e789-a050-4567-a8a1-7361d4a1745f (unittest.loader._FailedTest)\n",
"----------------------------------------------------------------------\n",
"AttributeError: module '__main__' has no attribute 'C:\\Users\\XXXX\\AppData\\Roaming\\jupyter\\runtime\\kernel-4b12e789-a050-4567-a8a1-7361d4a1745f'\n",
"\n",
"----------------------------------------------------------------------\n",
"Ran 1 test in 0.001s\n",
"\n",
"FAILED (errors=1)\n",
"An exception has occurred, use %tb to see the full traceback.\n",
"\n",
"SystemExit: True\n",
"\n",
"\n",
"d:\\development\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2855: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.\n",
" warn(\"To exit: use 'exit', 'quit', or Ctrl-D.\", stacklevel=1)\n",
"```\n",
"\n",
"The reason is that `unittest.main` looks at `sys.argv` and first parameter is what started IPython or Jupyter, therefore the error about kernel connection file not being a valid attribute.\n",
"Passing explicit list to `unittest.main` will prevent IPython and Jupyter look at `sys.argv`.\n",
"Passing `exit=Fals` will prevent `unittest.main` to shutdown the kernell process\n",
"\n",
"```python\n",
"if __name__ == '__main__':\n",
" unittest.main(argv=['first-arg-is-ignored'], exit=False)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import unittest\n",
"\n",
"class TestDemo(unittest.TestCase):\n",
" \"\"\"Example of how to use unittest in Jupyter.\"\"\"\n",
" \n",
" def test(self):\n",
" self.assertEqual('foo'.upper(), 'FOO') "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
".\n",
"----------------------------------------------------------------------\n",
"Ran 1 test in 0.005s\n",
"\n",
"OK\n"
]
}
],
"source": [
"if __name__ == '__main__':\n",
" unittest.main(argv=['first-arg-is-ignored'], exit=False)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment