python自动化持续集成:3.Jenkins集成自动化测试实战
Posted new nm个对象
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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自动化,对于接口自动化和移动端自动化集成的方式也都大同小异。
以上是关于python自动化持续集成:3.Jenkins集成自动化测试实战的主要内容,如果未能解决你的问题,请参考以下文章