System (“pause”) in unittest
我有编译到.exe的python应用程序。在某些情况下,程序以sys.exit()终止,但为了不关闭控制台窗口,我使用下面的代码进行操作,这很好:
1 2 3 4 5 6 | try: sys.exit() except SystemExit: raise finally: os.system("pause") |
问题是,如果我的代码引发SystemExit,我需要测试,但是由于filnally块,测试无法通过——它们只是无限的。有没有可能让UnitTest通过
我只会嘲笑江户十一〔0〕。甚至超过了EDOCX1[1]来断言它是否被调用。
1 2 3 4 5 6 7 8 9 10 11 12 | # your_module.py import sys import os def something(): try: sys.exit() except SystemExit: raise finally: os.system("pause") |
还有测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import unittest import your_module try: from unittest.mock import patch except ImportError: from mock import patch class TestSysexit(unittest.TestCase): @patch('your_module.os.system') def test_system_exit(self, mock_os_system): with self.assertRaises(SystemExit): your_module.something() mock_os_system.assert_called_once_with('pause') if __name__ == '__main__': unittest.main() |
号
mock and patch在python3的