【问题标题】:How to prevent code exit during Python 3.6 unit testing [duplicate]如何在 Python 3.6 单元测试期间防止代码退出 [重复]
【发布时间】:2017-11-10 19:49:58
【问题描述】:

当我使用 Python 3.6 编写函数和类时,我会尝试尽快编写单元测试。我正在编写一个简单的函数来测试文件是否存在于用户指定的位置,如下所示:

import os
import sys
import unittest

def verify_file_existance(file_path, file_name):
    total_name = file_path + file_name
    if os.path.isfile(total_name):
        return
    sys.exit('{}{}{}'.format('FATAL ERROR: ', file_name, 'does not exist'))

上述函数的单元测试如下

class InputFileTest(unites.TestCase):
    def test_verify_file_existance(self):
        file_name = 'Test.csv'
        file_path = '../../Data/VandV/Input_Reader/'
        verify_file_existance(file_path, file_name)

如果文件存在于所需位置,则测试成功;但是,如果该文件不存在,则程序会以 致命警告 退出。这就是我希望程序在正常运行期间的行为方式;但是,在单元测试中,我希望能够有目的地放置不正确的路径并将其注册为成功的测试,以证明程序可以满足我的要求。换句话说,在一个测试用例中,我不希望程序退出。在单元测试期间有没有办法做到这一点?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

您可以使用 try/except 优雅地处理错误 https://docs.python.org/3/tutorial/errors.html#handling-exceptions

class InputFileTest(unites.TestCase):
     def test_verify_file_existance(self):
         file_name = 'Test.csv'
         file_path = '../../Data/VandV/Input_Reader/'
         try:
              verify_file_existance(file_path, file_name)
         except:
              print("file not found")

【讨论】:

    【解决方案2】:

    尝试尝试除语句:

    class InputFileTest(unites.TestCase):
        def test_verify_file_existance(self):
            try:
                file_name = 'Test.csv'
                file_path = '../../Data/VandV/Input_Reader/'
                verify_file_existance(file_path, file_name)
            except Exception as e:
                print("\n\aError. Unable to locate File!\nError: {}").format(str(e))
                try:
                    exit(0)
                except:
                    sys.exit(1)
    

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2012-05-16
      • 1970-01-01
      相关资源
      最近更新 更多