I am giving an example which throws an error in ipython/jupyter notebook, but runs fine as an individual script.
import unittest
class Samples(unittest.TestCase
unittest.main looks at sys.argv by default, which is what started IPython, hence the error about the kernel connection file not being a valid attribute. You can pass an explicit list to main to avoid looking up sys.argv.
In the notebook, you will also want to include exit=False to prevent unittest.main from trying to shutdown the kernel process:
unittest.main(argv=['first-arg-is-ignored'], exit=False)
You can pass further arguments in the argv list, e.g.
unittest.main(argv=['ignored', '-v'], exit=False)