我目前正在做我的python类的作业,需要一些帮助。我写了下面的函数:
def get_funcs(funcs: dict, file_name: str, table_name: str) -> None:
'''
Read the given *.csv file, store the data inside the database and store the functions in a dict
Args:
functions dict: Dictionary to store the functions object
file_name str: The file name of the csv-file with file extension
table_name str: The name of the SQL table
'''
global update_database
try:
if file_name == "test.csv" or file_name == "test":
raise ValueError("The function for the test data is not neccessary.")
elif file_name != "train.csv" and file_name != "train" and file_name != "ideal.csv" and file_name != "ideal":
raise ValueError("Given a completly wrong / empty file or a directorys.")
# store the complete path to the file in a variable
complete_path = os.path.join(dataset_dir, file_name)
# check file to be correct
file_extension = os.path.splitext(file_name)[1]
if file_extension == "":
print_log(MessageType.Warn, "get_funcs", "Missing file extension. Added "".csv"" automatically!")
complete_path += ".csv"
if not os.path.exists(complete_path):
raise FileNotFoundError()
# read csv file and store it in a data frame
data = pd.read_csv(complete_path, sep=",")
print_log(MessageType.Info, "get_funcs", "Successfully read \"" + file_name + "\"!")
except PermissionError as error:
print_log(MessageType.Error, "get_funcs", "Cannot open the given csv file!")
return
except Exception as error:
print_log(MessageType.Error, "get_funcs", error)
return
字符串
任务的一部分是编写单元测试。所以我写了以下代码:
import main
import unittest
class UnitTestPythonTask(unittest.TestCase):
def test_check_test_function(self):
'''
Checks the file validation of the given .csv files
'''
self.assertRaises(ValueError, main.get_funcs({}, "test.csv", "TestFunction"))
型
测试失败,因为没有引发ValueError。如果我设置一个断点并观察单个步骤,我可以看到,ValueError被引发并被记录(print_log
)。
我尝试在try... except...块外设置raise ValueError("Given a completly wrong / empty file or a directorys.")
,但没有成功。在测试成功后,当我检查是否引发异常时,我添加了一个addtionall,除了ValueError。同样没有成功。
有谁能告诉我,为什么测试失败,尽管ValueError被提出?
1条答案
按热度按时间mwg9r5ms1#
你的函数
except Exception as error:
中有一个广泛的异常,它捕获了在调用print_log
后从函数中引发并返回None
的任何错误。这就是为什么你在测试中没有看到任何异常。在你的问题中,你没有说
print_log
是什么,所以我实现了一个占位符保持器,它假设你打印到stdout
。字符串
作为参考,这是我的
main.py
包含的内容:型