Pytest在Databricks repo中运行时不输出junitxml



我们有一个启用repos和repos中的文件的Databricks平台。因此,我们可以在repos中拥有.py文件,这些文件可以被Databricks笔记本调用。

我们目前正在测试在Databricks集群上运行单元测试的可行性,而不是在我们的Git/CI环境中使用(PySpark)映像。

Databricks中的repo看起来像

| - notebook
| - mycode.py
| - mycode_test.py

这里,mycode.py包含一个在Spark数据框架上应用转换的函数。文件mycode_test.py包含一个使用pytest的单元测试构建。(和一些fixture来创建测试数据和处理Spark会话/Spark上下文)。

我们从笔记本运行pytest,而不是从命令行。因此,Databricks笔记本看起来像:

import pytest
retcode = pytest.main(['-k', 'mycode_test',
'-o', 'cache_dir=/dbfs/FileStore/',
'--junitxml', '/dbfs/FileStore/pytestreport.xml',
'-v'
]
)

此代码片段在标准Databricks集群上运行良好(安装了运行时10.4 LTS和pytest),单元测试的结果在单元格下面打印出来。

但是,没有输出存储在缓存目录或junit xml文件的指针中。

问题:

  • 我们错过了什么吗?
  • 我们是否可以假设它实际上在未知位置生成输出,因为pytest.main没有崩溃?
  • 是否在Databricks内的。fuse-mounts导致这里的问题?

我在pytest.main命令的初始路径设置过程中似乎犯了一些错误。我现在已经更新了这些路径,它们可以工作了。

因此,下面的代码片段在databricks FileStore中生成XML和缓存文件。

同样,这可能只适用于当你在一个Databricks Repo中工作,并启用了repos中的文件时。

import pytest
retcode = pytest.main(['-k', 'mycode_test',
'-o', 'cache_dir=/dbfs/FileStore/',
'--junitxml', '/dbfs/FileStore/pytestreport.xml',
'-v'
]
)

最新更新