是否可以在Jenkins的代码中注入变量,然后像往常一样运行作业?

时间:2018-01-18 21:40:50

标签: python selenium jenkins automation saucelabs

我想使用Jenkins在多个平台浏览器配置上运行多个自动化作业。用python编写的自动化框架已经设置为使用Saucelabs实现此目的。

编写代码的人将其拆分为每个浏览器的单独文件夹,每个文件夹都有自己不同的硬编码大小的'建立。已为每个文件夹运行Jenkins作业。

这种设置在开发或修复测试用例时需要大量的复制粘贴,这是一个维护噩梦。

我想改进这样的过程:

a)继续在不同的浏览器上运行多个作业

b)将自动化代码减少到单个文件夹

c)让詹金斯注入“帽子”。在运行作业之前dict到该文件夹​​中的文件

d)覆盖'大写'在其他浏览器上运行下一个作业时使用新值

我想知道这种情况是否可行:

  1. 添加多个'大写'对詹妮丝的解释
  2. 从下拉列表或单选按钮等中选择一个
  3. jenkins然后注入所选择的帽子'进入selenium框架中的一些(config.py)文件
  4. 这个工作然后像往常一样用我指定的'帽子,和酱油一起运行
  5. 能够使用不同的'
  6. 创造更多就业机会

    工作1:

      

    caps = {       '平台':' windows',       ' browserName':' chrome',       '版本':' 63' }

    +通常的自动化代码

    工作2:

      

    caps = {       '平台':' macOS',       ' browserName':' safari',       '版本':' 11' }

    +通常的自动化代码

    是否可以将Jenkins配置为完成此操作?如何?它是适合这种情况的合适工具吗?

1 个答案:

答案 0 :(得分:0)

我在自己的机器上安装了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->高级选项卡并选择:

,在Jenkins中创建多个共享同一目录的自由式作业
  

使用自定义工作区

在每个作业的Build选项卡中,我添加了使用我选择的选项执行shell(或windows命令行)的选项,例如:

JOB1:

  

python test.py windows chrome 63

JOB2:

  

python test.py macOS firefox 58

所以现在我有多个工作在酱实验室的各种平台浏览器组合上运行,但共享相同的源代码