如何 运行 Databricks 中的 Spark-Scala 单元测试笔记本?

How to run a Spark-Scala unit test notebook in Databricks?

我正在尝试使用 scalatest.funsuite 为我的 Spark-Scala 笔记本编写单元测试代码,但带有 test() 的笔记本未在数据块中执行。你能告诉我怎么才能运行吗?

这是相同的示例测试代码。

import org.apache.spark.sql.{Row, SparkSession}
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.Assertions._
import org.apache.spark.eventhubs._
import com.fasterxml.uuid.Generators
import org.apache.spark.sql.functions._
import org.apache.spark.sql.{DataFrame, Row, SparkSession, Column}

class ImsLoyaltyTest extends AnyFunSuite {
  test ("Date Format Checker") {
    val sampleIpData = Seq(
      Row("india","hello","05-03-2021","14","50"),
      Row("india","hello","15-06-2021","14","50"),
      Row("india","hello","05/06/2021","6100","50"),
      Row("india","hello","05-31-2021","14","50")
    )
    
    val sampleIpSchema = new StructType()
      .add("a", StringType)
      .add("b", StringType)
      .add("c", StringType)
      .add("d", StringType)
      .add("e", StringType)
    
    val sampleIpDF = spark.createDataFrame(spark.sparkContext.parallelize(sampleIpData), sampleIpSchema)
    
    assert (sampleIpDF.collectAsList() == sampleIpDF.collectAsList())
    
  }
}

您需要为该测试套件显式创建对象并执行它。 在 IDE 中,您依赖于特定的 运行ner,但它在笔记本环境中不起作用。

您可以使用创建对象 (docs) 的 .execute 函数:

(new ImsLoyaltyTest).execute()

但最好使用 ScalaTest 的 .run 方法 shell (docs) - 您可以控制颜色输出、运行 多重测试等。 :

import org.scalatest._

nocolor.durations.stats.run(new ImsLoyaltyTest)