python - 如何从笔记本或数据块上的命令行运行 pytest?
问题描述
我创建了一些类,每个类都将数据框作为参数。我已经导入了 pytest 并创建了一些固定装置和简单的断言方法。
我可以从笔记本调用 pytest.main([.]) ,它将从根目录(databricks/驱动程序)执行 pytest。
我试过传递笔记本路径,但它说找不到。
理想情况下,我想从命令行执行这个。
如何配置根目录?spark os 和我发现很难连接的用户工作区之间似乎存在脱节。
需要注意的是,我不想使用 unittest,因为我可以通过输出 AzureDevOps 可以报告的 junitxml 在 CI 管道中成功使用 pytest。
解决方案
我已经在本文底部的链接中解释了您无法在 Databricks 笔记本上运行 pytest 的原因(除非您将它们导出,并将它们作为常规 .py 文件上传到 dbfs,这不是您想要的)。
但是,我已经能够使用如下方法在 Databricks 中运行文档测试doctest.run_docstring_examples
:
import doctest
def f(x):
"""
>>> f(1)
45
"""
return x + 1
doctest.run_docstring_examples(f, globals())
这将打印出:
**********************************************************************
File "/local_disk0/tmp/1580942556933-0/PythonShell.py", line 5, in NoName
Failed example:
f(1)
Expected:
45
Got:
2
如果您还想引发异常,请进一步查看:https ://menzess.github.io/howto/test/code-in-databricks-notebooks/
推荐阅读
- qt - Qt 中事件的默认优先级
- timeout - 是否可以使用 Tomcat 8 和 Liferay 7 运行长时间请求?
- amazon-ec2 - EC2 上的 MiniKube,Pod 内部的外部 DNS 查找失败(比如 Speech.googleapis.com)
- javascript - 在数组中传递布尔评估结果的语法?
- java - 我可以在我的 java 可运行 jar 项目中包含 Solr 服务器吗?
- shell - 在Jenkins中将带有空格的字符串参数传递给字符串命令
- python - 如何将 pandas df 变成带有子组的字典
- git - 在批处理文件中执行 git 命令时生成日志的正确方法是什么
- sublimetext3 - 无法在 Windows 7 上的 Sublime Text 3 中使用 Fira 代码字体连字
- python - 如何从 Mac 中删除 python 3.7.3?