python - 如何为 SQL 语句创建单元测试?

标签 python sql unit-testing snowflake-cloud-data-platform linter

我有几个 SQL 语句存储为文件,由 Python 脚本执行。该数据库托管在 Snowflake 中,我使用 Snowflake SQLAlchemy连接到它。

我如何测试这些陈述?我不想执行它们,我只是想检查它们是否可执行。

一件非常基本的事情就是检查它是否是有效的标准 SQL。更好的答案是考虑雪花特定的东西,例如

copy into s3://example from table ...

最好的答案是还检查权限的东西,例如对于 SELECT 语句(如果表可见/可读)。

最佳答案

内存中的 sqlite 数据库是一种选择。但是,如果您在代码中对 Snowflake 执行原始 SQL 查询,并且相同的语法对 sqlite 无效,则您的测试可能会失败。针对测试雪花数据库记录 HTTP 请求,然后在单元测试中重放它们更适合此目的。有两个非常好的库可以做到这一点,请查看它们:

  1. vcrpy
  2. betamax

关于python - 如何为 SQL 语句创建单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57000748/

相关文章:

python - 对python中变量的范围感到困惑

python - 从查询列中划分字符串并将结果插入同一个表

sql - 构建数据库表的最佳方式是什么?

Python unittest 报告通过测试

swift - 在单元测试中运行异步代码的问题

python osmnx - 只提取一个国家的大型高速公路

python - 如何使 PsychoPy 对象保持 Visual.Window 成为 Windows 7 上最顶层(事件)窗口?

需要 SQL 数据库设计建议

sql - 从同一列中的两行获取时间和超时

python - 如何在 unittest 测试用例中退出脚本