首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单元测试.pl Perl文件

单元测试.pl Perl文件
EN

Stack Overflow用户
提问于 2022-02-21 20:32:19
回答 2查看 161关注 0票数 3

我对Perl非常陌生,但我正试图向Sanoid (https://github.com/jimsalterjrs/sanoid)添加一些功能,它是用Perl作为一个没有.pm模块文件的脚本编写的(据我所理解)。

我想将一些简单的单元测试添加到我添加的一个新的子例程中,我希望能够像在Python中那样简单地完成这一任务,在那里您只需要import其他文件的名称,并测试来自各种输入的子例程返回值。

我读过一些测试教程,并认为我遵循了如何进行实际测试,但我在导入我想测试的脚本的第一个障碍上挣扎着。

据我所读,导入东西的主要方法是将其转换为.pm模块并将其转化为use模块,但我不想尝试仅仅为了测试而重新设计某人的代码(特别是当我对Perl如此陌生时)。另一种方法似乎是requiredo文件,据我了解,该文件将执行该文件(这并不理想,因为即使没有参数调用也是如此),这意味着我需要向文件的末尾添加一个1;,以确保它在需要时返回true。

看起来,我可以使用unless (caller)重新排列事情,这样如果是required,就不会执行任何操作,但是我想检查一下,我没有遗漏一些明显的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-21 21:41:00

这里的Perl和Python实际上没有什么区别。就像在Python中一样,将文件加载为Perl中的模块来执行它。

但是,就像在Python中一样,您可以检查模块在Perl中是否作为脚本执行。

代码语言:javascript
运行
复制
# Python
if __name__ == "__main__":
   main()
代码语言:javascript
运行
复制
# Perl
main() if !caller();

这样的文件被称为“模块化”。

尽管如此,我不喜欢这种做法(无论用哪种语言)。如果你想要一个模块,就写一个模块。这只是我的看法。

票数 7
EN

Stack Overflow用户

发布于 2022-02-22 16:53:20

呵呵,我很久以前就做了一个工具,当时我不得不为人们转换一堆东西:编剧。这是在程序中使用Perl工具链的快速修正。

然后,诀窍是在测试要求之前,能够加载脚本而不执行任何操作,这就是ikegami模例,您可以将所有顶级代码包装在一个子例程中,只有在perl认为文件是作为程序运行时才调用它。

我写了很多关于这个的文章:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71212667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档