【发布时间】:2022-04-05 20:37:39
【问题描述】:
如何在不从 .ipynb 文件中导入所有内容的情况下对 Databricks .ipynb 中的 python 文件进行单元测试?
例如,我尝试在我的桌面上使用 VS Code 中的 unittest,我从我的 Azure Databricks 实例中克隆了 .ipynb 文件。
一旦我在本地运行它,我就有一个简单的单元测试来读取 CSV。
问题是,当我尝试从我正在测试的文件 (csv_to_parquet) 加载 --single 函数时,测试会尝试加载整个文件,其中包含本地不可用的项目。具体来说,NameError: name 'dbutils' is not defined。
在这个单元测试中我没有使用 dbutils。它只是在尝试加载 csv_to_parquet.py 文件时读取。 我如何告诉单元测试完全忽略它?
从我要测试的文件中导入的唯一函数是:
def readAndShowCSV(sFilePath = 'users.csv/users' ):
csvFile = spark.read.csv(mountPoint+loadPath+'/' + sFilePath, header=True, inferSchema=True)
csvFile.show(5)
return csvFile
那么为什么要调用 Dbutils 呢?
import unittest
import pandas as pd
from csv_to_parquet import readAndShowCSV
# Inherits from unittest.TestCase
# Gives us access to testing capibilities
class TestParquet(unittest.TestCase):
def test_readAndShowCSV(self):
# Function lives in csv_to_parquet.py
csvFile = readAndShowCSV()
# Will run all of our tests
if __name__ == '__main__':
unittest.main()
【问题讨论】:
标签: python unit-testing python-unittest databricks