繁体   English   中英

结构:如何对fabfile进行单元测试?

[英]Fabric: How can I unit test my fabfile?

在我从事的上一个项目中,我们的fabfile失控了。 尽管我们项目的其余部分都经过了充分的测试,但我们并未为fabfile编写任何测试。 重构令人恐惧,在运行命令之前,我们不确定结构命令是否可以按预期工作。

我正在开始一个新项目,我想确保我们的fabfile从一开始就经过了严格的测试。 服从测试山羊有一篇很棒的文章讨论了一些可能的策略,但是问题多于答案。 尽管似乎已死,但可以使用fabtest

是否有人成功对fabfile进行了单元测试? 如果是这样,怎么办?

  1. Docker实例中运行Fabfile任务

  2. 使用docker diff来验证Fabfile是否更改了正确的文件。

这仍然需要大量工作,但是无需进行过多的Fabfile修改即可进行测试。

您尝试过python-vagrant吗? 它似乎和fabtest一样,但是它包含一些Fabric演示,并且仍在使用和维护。

幻灯片- 亨里克·安德森(Henrik Andersson)提到的 -从那时起可在此处获得

RobinKåvelandHansen回答了我:

为了使结构代码在此得到良好测试,我们做了一些重构类型的示例。

通常,我会说最好的建议是尝试避免在执行高级代码的情况下,例如高层命令中的shell命令之类的低级代码。 将效果完全的代码与决策的代码隔离开。

分支增加了所需的测试用例数量,并且为更改某些服务器上的状态的代码编写良好的测试用例需要花费更多的精力。

当时,我们使用模拟来模拟结构,以编写对服务器有副作用的无分支代码的测试用例,因此代码+测试看起来像这样
显然,这样做有一个缺点,那就是它不会在shell命令本身中拾取错误。 我的经验是,这很少会引起严重问题。

使用模拟的其他选项是使用以下思路在计算机上本地运行测试,而不是远程运行测试

也许最健壮的方法是在无所事事的环境中运行测试,但这具有需要大量设置的缺点,并且倾向于使测试变慢。
我认为进行快速测试非常重要,因为这样您就可以一直运行它们,并且它们会为您提供一个非常好的反馈循环。

我为当前雇主编写的deploy-script具有〜150个测试用例,并且运行时间不到0.5秒,因此deploy-script实际上将在部署之前进行自检。
这样可以确保始终在每台开发人员机器上对其进行测试,例如在linux和mac osx行为不同的情况下,已经发现了很多错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM