相关疑难解决方法(0)

如何模拟导入

模块A包括import B在其顶部.然而在试验条件下,我想嘲笑 BA(模拟A.B)和进口完全避免B.

实际上,B并非故意安装在测试环境中.

A是被测单位.我必须导入A及其所有功能.B是我需要模拟的模块.但是我如何在A中模拟B并阻止A导入真实B,如果A做的第一件事就是导入B?

(没有安装B的原因是我使用pypy进行快速测试,不幸的是B还与pypy不兼容.)

怎么可以这样做?

python mocking python-import

126
推荐指数
6
解决办法
4万
查看次数

使用工作流程对 github 中的 databricks python 代码进行 flake8 linting

我的 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)

python github flake8 apache-spark databricks

8
推荐指数
1
解决办法
3862
查看次数