单元测试Python脚本

单元测试Python脚本,python,aws-glue,Python,Aws Glue,我是Python新手 不在函数/类中包装代码就可以测试Python脚本吗 假设我想用这个脚本来介绍 可以为它写一些UT吗 问题是:我不能在AWS Glue中运行方法/函数,但只有脚本是该框架的输入点 不在函数/类中包装代码就可以测试Python脚本吗 您只需创建运行脚本本身的单元测试(例如,使用子流程,检查它是否具有正确的retval/output) 问题是:我不能在AWS Glue中运行方法/函数,但只有脚本是该框架的输入点 这实际上并不排除编写函数(甚至类),除非AWS Glue明确禁止这

我是Python新手

不在函数/类中包装代码就可以测试Python脚本吗

假设我想用这个脚本来介绍

可以为它写一些UT吗

问题是:我不能在AWS Glue中运行方法/函数,但只有脚本是该框架的输入点

不在函数/类中包装代码就可以测试Python脚本吗

您只需创建运行脚本本身的单元测试(例如,使用
子流程
,检查它是否具有正确的retval/output)

问题是:我不能在AWS Glue中运行方法/函数,但只有脚本是该框架的输入点

这实际上并不排除编写函数(甚至类),除非AWS Glue明确禁止这样做(我觉得这不太可能)

Python文件同时是可运行脚本和可导入库是很常见的。您只需“关闭”脚本入口点:

def a_函数():
打印(“函数”)
def main():
a_函数()
#魔法!
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
最后两行是魔法位:
\uuuuu name\uuuuu
仅当文件作为脚本运行时才等于
“\uuuuuu main\uuuuu”


这意味着,如果您运行上述文件,它将立即打印“一个函数”,但如果您
导入它,它将不会执行任何操作,直到您调用
a_function()
(或
main()
)。

是的,它可以工作!非常感谢@masklin的这个魔法:)但是如何测试魔法位中的代码呢?这是应该被发现的还是有一些方法可以100%测试它?除了运行脚本本身之外,没有其他方法可以运行它们。通常,如果你想最大化覆盖率,你会忽略这些,只调用一个函数,然后你可以测试和覆盖它(唯一真正神奇的部分是
\uuuuuuuu name\uuuuuuuu
,所以从技术上讲,你可以在那里拥有你想要的代码)。