pytest搭建自動化測試環境(docker+pytest+jenkins+allure)
這里我以ubuntu18為例
- 如果有docker環境,可以直接拉取我打包好的鏡像
docker pull ziyigun/jenkins:v1.0
1 搭建Docker
1.1 安裝docker
# 配置docker安裝環境
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加阿里的GPG秘鑰
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 添加阿里鏡像源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"# 更新apt
sudo apt-get update# 查詢docker有哪些版本 第二列是版本號,第三列是存儲庫的名稱。
apt-cache madison docker-ce# 安裝最新版本
sudo apt-get install -y docker-ce#或者安裝指定版本(根據操作系統版本來安裝對應docker版本)
# sudo apt-get install -y docker-ce=5:19.03.1~3-0~ubuntu-cosmic# 查看docker版本
sudo docker version
1.2 配置鏡像加速
sudo vi /etc/docker/daemon.json
# 保存如下內容
{"registry-mirrors": ["https://ooq07srv.mirror.aliyuncs.com","https://registry.cn-hangzhou.aliyuncs.com","http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ]
}# 重啟docker驗證是否成功
sudo service docker restart
#或者
sudo systemctl restart docker
bug1:ExecStart=/usr/bin/dockerd -H fd://
- 如果發現docker啟動或者重啟報錯:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
解決辦法:
方法一:
cp /etc/docker/daemon.json /etc/docker/daemon.conf
sudo systemctl restart docker
方法二:
sudo edit /usr/lib/systemd/system/docker.service
# 原來的內容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 改為如下的內容
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /usr/local/docker# 重啟docker
systemctl daemon-reload
systemctl restart docker
bug2:mediaType in manifest should be …
- 如果發現報錯:
mediaType in manifest should be ‘application/vnd.docker.distribution.manifest.v2+json’ not ‘application/vnd.oci.image.manifest.v1+json’
解決辦法:
方法一:
# 升級Docker版本: 您可以嘗試升級Docker到支持OCI格式的版本
sudo apt-get purge docker-ce docker-ce-cli containerd.io
# 安裝最新的docker版本
sudo apt-get install -y docker-ce
方法二:
# Docker Registry API v2
docker pull --disable-content-trust jenkins/jenkins
1.3 卸載docker
如果使用完成之后想要卸載docker
# 卸載docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io
2 搭建Jenkins
2.1 拉取并運行Jenkins鏡像
# 拉取最新穩定版的jenkins
docker pull jenkins/jenkins:lts# 創建目錄,掛載jenkins信息
mkdir -p /var/jenkins_node# 設置目錄權限
chmod -R 777 /var/jenkins_node# 創建jenkins容器
docker run -d -uroot -p 80:8080 --name jenkins -v /var/jenkins_node:/var/jenkins_home jenkins/jenkins:lts
#說明:-d: 指定容器運行于前臺還是后臺,默認為false
#-u: 指定容器的用戶-p: 指定容器暴露的端口,主機的80端口映射容器的8080端口
#--name: 容器名稱-v: 給容器掛載存儲卷,掛載到容器的某個目錄# 查看容器運行狀態
docker ps | grep jenkins# 進入jenkins容器內部
docker exec -it -uroot jenkins bash
2.2 瀏覽器訪問Jenkins并配置
在瀏覽器中輸入宿主機ip,即可訪問到jenkins頁面,如:10.16.53.10
# 查看jenkins默認密碼(在容器外部執行命令)
docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword
然后根據自己的需求來選擇是否需要安裝Jenkins需要的插件(我這里選擇接受推薦的插件):
完成之后,創建一個用戶,設置用戶名密碼、郵箱等
- 修改時區
3 配置Python
在jenkins容器中,執行如下命令:
3.1 更新apt軟件包
# 獲取最新的軟件包
apt-get update
#升級已安裝的軟件包
apt-get upgrade
#提前安裝,以便接下來的配置操作
apt-get -y install gcc automake autoconf libtool make
apt-get -y install make*
apt-get -y install zlib*
apt-get -y install openssl libssl-dev
apt-get install sudo
3.2 下載python3源碼
cd /usr/local/src
# 安裝wget命令
apt-get install wget
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar -zxvf Python-3.6.8.tgz
mv Python-3.6.8 py3.6
cd py3.6
3.3 編譯并配置環境變量
# 在/usr/local/src/py3.6目錄執行以下命令
./configure --prefix=/var/jenkins_home/python3 --with-ssl
make
make install#添加python3軟鏈接ln -s /var/jenkins_home/python3/bin/python3 /usr/bin/python3# rm -f /usr/bin/python3即可刪除軟鏈接#添加pip3軟鏈接
# 將/var/jenkins_home/python3/bin/pip3鏈接到/usr/bin/pip3
ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3# 查看安裝結果
# 輸入python3,查看是否有對應信息輸出
python3
# 輸入exit()即可退出python的交互頁面
3.4 安裝項目所需python包依賴
# 在python根目錄下生成requirements.txt(指定python項目所依賴的包)
pip3 freeze > requirements.txt
# 將requirements.txt上傳到主機
docker cp requirements.txt jenkins:/usr/local/src
# 安裝所需的依賴到jenkins中
pip3 install -r requirements.txt
4 安裝allure依賴:輸出測試報告
# 退出jenkins容器,執行下面命令
# 官網地址:https://github.com/allure-framework/allure2/releases 建議選擇最新版本下載
# 下載成功之后上傳到服務器 或者直接通過wget命令下載也可以
wget https://github.com/allure-framework/allure2/releases/download/2.23.1/allure-2.23.1.zip
docker cp allure-2.23.1.zip jenkins:/usr/local/src# 重新進入jenkins容器中執行下面命令
docker exec -itu root jenkins bash# 解壓
unzip allure-2.23.1.zipmv allure-2.23.1 allure# /var/jenkins_home/python3/bin/python3.6
#配置python和allure環境
cat >> /root/.bashrc << "EOF"
export PATH=/usr/local/src/allure/bin:$PATH
export PATH=/usr/local/src/py3.6/bin:$PATH
EOF# 更新環境變量配置
source /root/.bashrc# 驗證環境變量
allure --version
5 安裝Java環境:allure需要有java環境
運行allure需要java環境
cd /usr/local
wget https://download.java.net/openjdk/jdk8u43/ri/openjdk-8u43-linux-x64.tar.gztar -xzf openjdk-8u43-linux-x64.tar.gz -C /usr/local/src/
cd /usr/local/src
mv java-se-8u43-ri java8# 配置Java環境變量
echo "export JAVA_HOME=/usr/local/src/java8" >> /root/.bashrc
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /root/.bashrcsource /root/.bashrc
# 驗證Java安裝
java -version
6 安裝pytest
pip3 install pytest
ln -s /var/jenkins_home/python3/bin/pytest /usr/bin/pytest
export PATH=/usr/local/src/pytest/bin:$PATH
source /root/.bashrc
# 輸入pytest查看是否安裝成功
7 配置jenkins中的插件和git地址
7.1安裝allure插件
7.2 設置本地jenkins容器中allure的可執行文件地址
7.3 新建jenkins項目(項目風格可以選擇自由風格)
①Item- 新建- 選擇Freestyle project - 填寫項目名稱
②填寫項目描述信息,并配置源碼管理(配置git倉庫地址和憑證)
編寫好自動化測試腳本(python代碼)后,上傳到git倉庫中
- 例如:https://gitee.com/Zifasdfa/pytest.git
③配置構建步驟
④添加構建的步驟(生成allure報告)
在allure report模塊下,點擊高級
點擊應用,然后點擊保存
⑤構建任務,點擊立即構建
⑥構建結果
點擊allure report,跳轉用例輸出界面,查看具體測試結果信息
根據需求,可以將本地已經部署好的jenkins容器打包本地鏡像上傳到dockerhub
docker tag jenkins/jenkins:lts ziyigun/jenkins:v1.0
docker login
# 輸入用戶名和密碼
# 推送到dockerhub倉庫
docker push ziyigun/jenkins:v1.0