python自动化(六)持续集成:3.Jenkins集成自动化测试实战

一.jenkins集成WEBUI自动化

1.python代码实现

在这里插入图片描述

测试代码如下:

import os
import time


import allure
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By


@allure.feature('百度搜索模块测试')
class TestBaiduSearch:
    def get_dir(self):
        """
        获取当前项目地址
        :return:
        """
        now_dir = os.getcwd()
        while True:
            now_dir = os.path.split(now_dir)
            if now_dir[1] == 'test_baidu_search_nogit':
                now_dir = os.path.join(now_dir[0], 'test_baidu_search_nogit')
                break
            now_dir = now_dir[0]
        return now_dir

    def setup(self):
        """前置动作"""
        # driver_path = os.path.join(self.get_dir(),'plugin/windows/chromedriver.exe') # Windows下使用
        driver_path = os.path.join(self.get_dir(), 'plugin/linux/chromedriver') # linux下使用
        option = Options()
        option.add_argument("--headless") # linux下使用无头浏览器需要添加这个参数
        option.add_argument("--no-sandbox") # 表示不用跟用户运行chrome
        option.add_argument("--disable-dev-shm-usage") #防止浏览器异常,不启动
        self.driver = webdriver.Chrome(executable_path=driver_path,chrome_options=option)
        self.driver.maximize_window()
        self.driver.implicitly_wait(5)

    def teardown(self):
        """后置动作"""
        self.driver.quit()


    @allure.story('百度搜索测试用例')
    @pytest.mark.parametrize("name", [("狗"), ("猫"), ("zhangsan")])
    def test_baidu_search(self, name):
        self.driver.get("https://www.baidu.com/")
        time.sleep(5)
        self.driver.find_element(By.ID, "kw").send_keys(f"{name}")
        self.driver.find_element(By.ID, "su").click()
        time.sleep(5)
        r = self.driver.title
        assert r == f"{name}_百度搜索"

生成requirements.txt文件,因为执行机(子节点)环境也需要安装这些第三方库

pip freeze > requirements.txt

代码准备完成后,上传到代码仓库(如GitHub)。在执行Jenkins任务时,都会从git上拉取代码。

2.执行节点机环境配置

因为我们最后的代码会在节点的执行机上执行,所以我们需要在对应的节点上配置我们运行自动化测试的所有环境。

我们本次所用搭建Jenkins的Linux机同时作为节点执行机

2.1.安装python3

因为我们的代码是使用python3编写的,需要给执行机的环境安装python3.

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
# 使用wget通过http方式下载python包
# 默认下载当前目录

# 创建一个目录,并把之前下载的包复制解压到这个目录
mkdir -p /usr/local/python3
tar -zxvf Python-3.6.3.tgz
cd Python-3.6.3

# 设置python3的安装目录,这样我们以后卸载python3,删除这个文件就行了
./configure --prefix=/usr/local/python3

# 编译
make
# 安装
make install

# 建立软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3

# 检验
python3 -V
pip3 -V

注意:安装过程中,可能会报各种错误。不用担心,这是因为我们的系统缺少各种依赖库。我们只需要将报错信息在百度上搜一下,就能知道缺少什么库,然后使用yum install安装即可。

2.2安装allure

因为我们使用了allure插件报告,需要给执行机环境配置allure

# 创建目录
mkdir /usr/local/allure
cd /usr/local/allure
# 下载allure安装包(allure-commandline-2.13.3.tgz),上传到/usr/local/allure目录
# 地址:https://repo1.maven.org/maven2/io/qameta/allure/allure-commandline/2.13.3/

# 解压目录
tar -zxvf allure-commandline-2.13.0.tgz

# 添加软连接
ln -sf /usr/local/allure/allure-2.13.3/bin/allure /usr/bin/allure

# 验证
allure

2.3 安装jdk

因为allure需要使用jdk,使用环境中还需要配置jdk。

第一步:下载jdk包 https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

第二步:上传文件到节点某目录下(这里以/usr/local/java)

第三步:解压。tar -zxvf jdk-8u281-linux-x64.tar.gz

第四步:配置环境变量。 vi /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_281
export JRE_HOME=/usr/local/java/jdk1.8.0_281/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

第五步:重新加载环境变量。source /etc/profile

第六步:检验。java -version

2.4安装chrome

因为我们代码使用的是chrome,所以需要安装chrome浏览器(Linux下是没有界面的)

mkdir /usr/local/chrome
cd /usr/local/chrome
# 安装
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
yum install ./google-chrome-stable_current_x86_64.rpm
# 查看版本
rpm -qa|grep google-chrome 

3.添加Jenkins节点

我们虽然会使用安装Jenkins这个服务器来执行自动化任务,但还是需要创建一个Jenkins节点。Jenkins的master节点主要用来调度任务,而不是执行任务。

创建方法参考“持续集成技术第五节内容”

安装完成后效果如下

在这里插入图片描述

4.Jenkins中构建任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Jenkins上配置git

在这里插入图片描述
在这里插入图片描述

编写构建时执行的命令

在这里插入图片描述

配置allure

在这里插入图片描述
在这里插入图片描述

然后点击保存

5.执行Jenkins任务

注意,因为我们使用Jenkins执行任务时,是使用的Jenkins用户。可能会遇到执行权限的问题。解决办法:就是到对应节点的Jenkins的节点工作目录,将目录设置最大权限。当然这种方式是不安全的,也可以将具体的文件设置为需要的权限

chmod 777 -R + 目录路径

同时需要在Jenkins上设置allure-commandline.否则Jenkins将无法构建allure报告
在这里插入图片描述
在这里插入图片描述

然后还需要指定一下,节点的JAVA_HOME目录

在这里插入图片描述
在这里插入图片描述

然后执行构建,就能看到allure报告了

在这里插入图片描述

6.增加邮件发送allure报告功能

在实际工作中,我们可以将allure_report在构建完成后,通过邮件发送。

第一步:在Jenkins中安装插件:Email Extension 和Email Extension Template

第二步:邮件发送相关配置

在这里插入图片描述
在这里插入图片描述

其他的可以保持默认即可

第三步:在任务构建后操作中添加邮件发送

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结:这里我们只讲解了集成WEBUI自动化,对于接口自动化和移动端自动化集成的方式也都大同小异。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值