exit = False в unittest.main (exit = False) - PullRequest
0 голосов
/ 28 июня 2019

После запуска юнит-теста в Ipython,

In [2]: %paste
import unittest
import sys


def square(n):
    return n ** 2


class MyCase(unittest.TestCase):
    def test_a(self):
        check = square(3)
        self.assertEqual(check, 9)


print(sys.argv)
unittest.main()

Сообщение об ошибке:

/home/me/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3304: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
  warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

Проконсультируйтесь с несколькими ссылками:

Использование Python unittest в IPython или Jupyter - Влад Безден - Средний

Невозможно запустить основную функцию unittest в записной книжке ipython / jupyter

Одно из решений:

if __name__ == '__main__':
    unittest.main(argv=['first-arg-is-ignored'], exit=False)

другой

 unittest.main(argv=['ignored', '-v'], exit=False) 

Они все правы, но по счастливой случайности.

Решение простое

unittest.main(exit=False) 


In [4]: %paste
import unittest
import sys

def square(n):
    return n ** 2

class MyCase(unittest.TestCase):
    def test_a(self):
        check = square(3)
        self.assertEqual(check, 9)

print(sys.argv)
unittest.main(exit=False)

## -- End pasted text --
['/home/me/anaconda3/bin/ipython']
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK
Out[4]: <unittest.main.TestProgram at 0x7f8d580a8978>

Поскольку их ответы неверны, их аргументы ненадежны.

Почему работает `(exit = False) ', есть ли у него какие-либо недостатки, потому что Ipython не настраивает его как значение по умолчанию.

...