模块A包括import B在其顶部.然而在试验条件下,我想嘲笑 B的A(模拟A.B)和进口完全避免B.
实际上,B并非故意安装在测试环境中.
A是被测单位.我必须导入A及其所有功能.B是我需要模拟的模块.但是我如何在A中模拟B并阻止A导入真实B,如果A做的第一件事就是导入B?
(没有安装B的原因是我使用pypy进行快速测试,不幸的是B还与pypy不兼容.)
怎么可以这样做?
我的 databricks python 代码位于github. 我设置了一个基本工作流程来使用flake8. 这会失败,因为当我的脚本在 databricks 上运行时隐式可用的名称(例如spark、、等)在databricks 外部(在 github ubuntu vm 中)进行 lint时不可用。scdbutilsgetArgumentflake8
如何在github使用中检查 databricks 笔记本flake8?
例如我得到的错误:
test.py:1:1: F821 undefined name 'dbutils'
test.py:3:11: F821 undefined name 'getArgument'
test.py:5:1: F821 undefined name 'dbutils'
test.py:7:11: F821 undefined name 'spark'
Run Code Online (Sandbox Code Playgroud)
我的笔记本在github上:
dbutils.widgets.text("my_jdbcurl", "default my_jdbcurl")
jdbcurl = getArgument("my_jdbcurl")
dbutils.fs.ls(".")
df_node = spark.read.format("jdbc")\
.option("driver", "org.mariadb.jdbc.Driver")\
.option("url", jdbcurl)\
.option("dbtable", "my_table")\
.option("user", "my_username")\
.option("password", "my_pswd")\
.load()
Run Code Online (Sandbox Code Playgroud)
我的 .github/workflows/lint.yml
on:
pull_request:
branches: …Run Code Online (Sandbox Code Playgroud)