Run Test Case on Spark

本文讲述了如何运行Spark的测试用例
摘要由CSDN通过智能技术生成

    今天有哥们问到如何对Spark进行单元测试。现在将Sbt的测试方法写出来,如下:

    对Spark的test case进行测试的时候可以用sbt的test命令:

    一、测试全部test case

     sbt/sbt test


    二、测试单个test case

     sbt/sbt "test-only *DriverSuite*" 


下面举个例子:

这个Test Case是位于$SPARK_HOME/core/src/test/scala/org/apache/spark/DriverSuite.scala 

FunSuit是scalatest里面的测试Suit,要继承它。这里主要是一个回归测试,测试Spark程序正常结束后,Driver会不会正常退出。

注:我就拿这个例子模拟一下,测试成功和测试失败的情景,这个例子和DriverSuite的测试目的完全不一致,只是演示作用。 :)

下面是正常运行退出的例子:

package org.apache.spark

import java.io.File

import org.apache.log4j.Logger
import org.apache.log4j.Level

import org.scalatest.FunSuite
import org.scalatest.concurrent.Timeouts
import org.scalatest.prop.TableDrivenPropertyChecks._
import org.scalatest.time.SpanSugar._

import org.apache.spark.util.Utils

import scala.language.postfixOps

class DriverSuite extends FunSuite with Timeouts {

  test("driver should exit after finishing") {
    val sparkHome = sys.env.get("SPARK_HOME").orElse(sys.props.get("spark.home")).get
    // Regression test for SPARK-530: "Spark driver process doesn't exit after finishing"
    val masters = Table(("master"), ("local"), ("local-cluster[2,1,512]"))
    forAll(masters) { (master: String) =>
      failAfter(60 seconds) {
        Utils.executeAndGetOutput(
          Seq("./bin/spark-class", "org.apache.spark.DriverWithoutCleanup", master),
          new File(sparkHome),
          Map("SPARK_TESTING" -> "1", "SPARK_HOME" -> sparkHome))
      }
    }
  }
}

/**
 * Program that creates a Spark driver but doesn't call SparkContext.stop() or
 * Sys.exit() after finishing.
 */
object DriverWithoutCleanup {
  def main(args: Array[String]) {
    Logger.getRootLogger().setLevel(Level.WARN)
    val sc = new SparkContext(args(0), "DriverWithoutCleanup")
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
抱歉,我之前的回答有误。在RIDE中,你不能直接设置测试套件的执行顺序。RIDE会按照测试套件在项目中的顺序来执行。 但是,你可以通过在测试套件中引用其他测试套件来实现自定义的执行顺序。以下是一个示例: 假设你有三个测试套件:suite1.robot、suite2.robot和suite3.robot,你希望按照suite2、suite1、suite3的顺序执行它们。 1. 创建一个新的测试套件文件(例如,sequence_suite.robot)。 2. 在sequence_suite.robot文件中,编写测试用例并使用"Run Test Suite"关键字来执行其他测试套件。示例代码如下: ```robotframework *** Test Cases *** Run Suites in Custom Order [Tags] sequence Run Test Suite suite2.robot Run Test Suite suite1.robot Run Test Suite suite3.robot ``` 3. 在RIDE中选择并执行sequence_suite.robot文件中的"Run Suites in Custom Order"测试用例。 4. RIDE将按照你在该测试用例中编写的顺序执行suite2.robot、suite1.robot和suite3.robot,实现了自定义的执行顺序。 通过引用其他测试套件来创建一个顺序的测试用例,你可以在RIDE中实现测试套件的自定义执行顺序。 对于每个测试套件,你可以在Test Suites窗格中创建一个单独的测试套件文件,并在sequence_suite.robot文件中引用它们。这样,你可以更好地组织和管理你的测试套件。 对于"Run Test Case"关键字,它用于执行单个测试用例,而不是整个测试套件。如果你想要按照指定顺序执行测试用例,你可以在sequence_suite.robot文件中创建一个测试用例列表,并按照你的需求调用这些测试用例。 希望这次回答能够帮到你!如果你还有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值