我正在用perl编写一个测试自动化软件,我遇到了我定义的配置文件的问题。 自动化软件接收用perl哈希编写的输入CFG文件,其中包括要构建的图像。 现在需要在不同的测试场景中构建相同的图像,例如每晚构建,每小时构建和周末回归。 目前我们必须在3个不同的文件中定义相同的图像,任何时候我们想要更新它们(比如更新git分支)我们需要在3个文件中完成它。 我正在寻找一个解决方案,我可以创建一个定义构建的文件,让其他文件继承它。 我正在寻找perl / xml / json / etc中的内置语言功能。不是我需要在测试软件中实现自己的东西。
例如
晚上cfg文件:
builds => {
smp_be => {
name => image_smp
branch => 2011.12
compiler => little_endian
}
up_be => {
name => image_up
branch => 2011.12
compiler => big_endian
}
}
some other ** night ** specific stuff...
周末cfg文件
builds => {
smp_be => {
name => image_smp
branch => 2011.12
compiler => little_endian
}
up_be => {
name => image_up
branch => 2011.12
compiler => big_endian
}
}
some other ** weekend ** specific stuff...
相反,我希望有像
这样的东西晚上的cfg文件
builds {
# im inventing this syntax up
# common_builds.cfg contains the previous files
include common_builds.cfg
}
some other ** night ** specific stuff...
请告知
提前致谢
答案 0 :(得分:0)
如果顶级键不同,您可以简单地合并Perl中的哈希值:
my $builds_hashref = loaded_from_build_file();
my $scenario_hashref = loaded_from_scenario_file();
my $config_hashref = { %$builds_hashref, %$scenario_hashref };
。 。 。当然假设您已经实现了从任何文件加载通用配置的逻辑。
如果顶层的键是相同的,那么这种合并会变得更复杂,但仍然可以,只要您确切知道构建和场景文件之间的配置键在哪里会有所不同。