获取使用spark运行的python文件的覆盖率xml

获取使用spark运行的python文件的覆盖率xml,python,apache-spark,code-coverage,spark-submit,Python,Apache Spark,Code Coverage,Spark Submit,我有一个python文件(myfile.py),通常通过运行以下命令来运行该文件 spark2-submit --master yarn --deploy-mode client myfile.py arg1 arg2 我需要得到这个文件的报道,我一直在尝试 coverage run myfile.py arg1 arg2 coverage xml -o coverage-myfile.xml 这很好,为我提供了覆盖率xml,但由于需要使用spark submit而不是简单的python来运

我有一个python文件(
myfile.py
),通常通过运行以下命令来运行该文件

spark2-submit --master yarn --deploy-mode client myfile.py arg1 arg2
我需要得到这个文件的报道,我一直在尝试

coverage run myfile.py arg1 arg2
coverage xml -o coverage-myfile.xml
这很好,为我提供了覆盖率xml,但由于需要使用
spark submit
而不是简单的
python
来运行,所以行不能正常工作。因此,我的保险范围比我希望的要低一点

除了使用spark,还有其他方法可以做到这一点吗?

在测试环境中(因此它不是完美的一对一,但应该是类似的),我通过实现一个会话范围的装置来实现这一点,该装置构建了一个
SparkSession
。比如:

@pytest.fixture(scope=“session”)
def spark():
火花=(
#为Spark 3.x工作准备就绪。
SparkSession.builder.config(
“spark.driver.extraJavaOptions”,
“-Dio.netty.tryReflectionSetAccessible=true”,
)
.config(
“spark.executor.extraJavaOptions”,
“-Dio.netty.tryReflectionSetAccessible=true”,
)
.appName(“pytest提供程序测试”)
.master(“本地[2]”)
.getOrCreate()
)
返回火花
然后,对于我需要测试的所有功能(以及覆盖范围),使用
spark
夹具

在您的情况下,您可能需要在
myfile.py
中使用一个如上构建的
SparkSession
对象调用一个特定于测试/覆盖范围的模块,并将其传递到您的代码库中。对于这些函数和任何子模块,您的覆盖范围仍然是准确的

然后可以将其作为常规python模块运行