我正在尝试从Databricks community edition内部以交互方式运行Python unittest
(尽管在我公司的Azure Databricks实例中也是如此),但是main()
函数不起作用像往常一样。
这是代码:
import unittest
import sys
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOOD')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
if __name__ == '__main__':
unittest.main(exit = False, verbosity = 2, argv = [sys.argv[0]])
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
相反,只是声称要运行零测试。 argv
的论点来自试图遵循here的建议。
不使用argv
参数运行将返回以下内容:
38061 (unittest.loader._FailedTest) ... ERROR
0 (unittest.loader._FailedTest) ... ERROR
50000 (unittest.loader._FailedTest) ... ERROR
2149 (unittest.loader._FailedTest) ... ERROR
0cb28c6d426949e982df5c6d0b79e272 (unittest.loader._FailedTest) ... ERROR
2 (unittest.loader._FailedTest) ... ERROR
4ac5791d8e3c580d7d20a3817c051ce567e3a023069ce8b9c68ff599b8a688ee (unittest.loader._FailedTest) ... ERROR
这似乎与调用sys.argv()
相对应。
Out[9]: ['/local_disk0/tmp/1574719976370-0/PythonShell.py',
'38061',
'0',
'50000',
'2149',
'0cb28c6d426949e982df5c6d0b79e272',
'2.4.4',
'4ac5791d8e3c580d7d20a3817c051ce567e3a023069ce8b9c68ff599b8a688ee']
接受的答案here不起作用。
但是,注释中的某些内容确实起作用(但没有使用main()
函数)。
suite = unittest.TestLoader().loadTestsFromTestCase(TestStringMethods)
unittest.TextTestRunner(verbosity = 2).run(suite)
任何建议将不胜感激。