是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?相关的知识,希望对你有一定的参考价值。
我想使用Jenkins在多个平台浏览器配置上运行多个自动化作业。用python编写的自动化框架已经设置为使用Saucelabs实现此目的。 编写代码的人将其拆分为每个浏览器的单独文件夹,每个文件夹都有自己不同的硬编码“大写”设置。已为每个文件夹运行Jenkins作业。
在开发或修复测试用例时,此设置需要大量复制粘贴,这是一个维护噩梦。 我想改进这样的过程:
a)继续在不同的浏览器上运行多个作业
b)将自动化代码减少到单个文件夹
c)让Jenkins在运行作业之前将'caps'dict注入该文件夹中的文件中
d)在另一个浏览器上运行下一个作业时,用新值覆盖'caps'
我想知道这种流程是否可行:
- 为詹金斯添加多个'大写'字母
- 从下拉列表或单选按钮等中选择一个
- 然后jenkins将选择的'caps'注入selenium框架中的某个(config.py)文件中
- 然后像往常一样,用我指定的'帽子'在酱油上运行
- 能够创造更多具有不同“帽子”的工作
工作1:
caps = {'platform':'windows','browserName':'chrome','version':'63'}
+通常的自动化代码
工作2:
caps = {'platform':'macOS','browserName':'safari','version':'11'}
+通常的自动化代码
是否可以配置Jenkins来做到这一点?如何?它是适合这种情况的合适工具吗?
我在自己的机器上安装了Jenkins并找到了我希望的解决方案,所以如果任何初学者都有相同的技术需求,我会回答我自己的问题:
首先,我在配置文件中使用了sys.argv [1],sys.argv [2],sys.argv [3]:
caps = {'platform':sys.argv [1],'browserName':sys.argv [2],'version':sys.argv [3]}
所以我可以从命令行动态传递一些参数:
python test.py windows chrome 63
然后,我可以通过转到config-> advanced选项卡并选择以下内容,在Jenkins中创建多个共享同一目录的自由式作业:
使用自定义工作区
在每个作业的Build选项卡中,我添加了使用我选择的选项执行shell(或windows命令行)的选项,例如:
工作1:
python test.py windows chrome 63
作业2:
python test.py macOS firefox 58
所以现在我有多个工作在酱实验室的各种平台浏览器组合上运行,但共享相同的源代码
以上是关于是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?的主要内容,如果未能解决你的问题,请参考以下文章
Jmeter + ant + jenkins轻量级接口自动化测试