jenkins + python + pytest 自动化集成环境配置

1. python环境安装

1)安装Python,机器上没有自己安装;

# 安装依赖,避免报错
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

tar -zxvf Python-3.8.6.tgz
./configure --prefix=/usr/local/python38
make
sudo make install
sudo ln -s /usr/local/python38/bin/python3.8 /usr/bin/python3
sudo ln -s /usr/local/python38/bin/pip3.8 /usr/bin/pip3

python3    # 查看是否安装成功

2)安装Python虚拟环境

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper  # virtualenvwrapper更方便的管理虚拟环境,将所有虚拟环境整合到一个目录下管理


# 配置环境变量~/.bash_profile
export WORKON_HOME=$HOME/.virtualenvs             # mkdir .virtualenvs,作为虚拟环境目录
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh        # find / -name “virtualenvwrapper.sh” 查看目录位置

source ~/.bash_profile     # 生效配置

3)创建虚拟环境

mkvirtualenv -p /usr/bin/python3.6 autocase    # 创建虚拟环境
workon   # 查看已有虚拟环境
workon autocase   # 激活虚拟环境

cdvirtualenv   # 进入当前激活虚拟环境目录, 虚拟环境中只包含原生Python库,需要重新安装其他依赖包,或virtualenv-clone 可复制虚拟环境

2. 依赖包安装

# 依赖包:根据需要安装 https://www.lfd.uci.edu/~gohlke/pythonlibs/
sudo pip3 install pytest
sudo pip3 install allure-pytest

# pip安装失败, 下载压缩包
tar -zxvf xx.tar.gz
python3 setup.py build
python3 setup.py install


pip3 freeze > requirements.txt    # 导出已安装的依赖包
pip3 install -r requirements.txt   # 安装依赖包


# allure 报错 https://registry.npmjs.org/allure-commandline/-/allure-commandline-2.13.0.tgz
tar -zxvf allure-commandline-2.13.0.tgz
配置环境变量:  解压目录/allure-commandline/package/dist/bin
allure --version

3. 下载测试代码调试环境

cdvirtualenv: 进入虚拟环境后,下载code进行环境调试。

4. Jenkins 配置

1)安装Java: 新增slave节点需要java环境

cd /usr/local/java   # 官网下载对应linux版本的jdk
tar zxvf jdk-8u311-linux-x64.tar.gz

配置环境变量/etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_311    # java解压路径
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile
java -version          # 查看安装效果

2)新增slave节点:Launch  agent agents via SSH

3)配置Jenkins job: pipeline的job

pipeline {
    agent{label 'execute ip'}           #  指定执行slave机器
    environment {
        PYTHONIOENCODING = 'UTF-8'     # 中文编码问题加上的
    }
    stages {
        stage('checkout code') {
            steps {
                 dir('/dir/') {
                     git branch: 'master', url: 'git url'
                }
             }
        }
        stage('parallel execute stage') {
            parallel {
                stage('Stage2.1') {
                    steps {
                        sh label: '', script: '''source ~/.bash_profile
                        cd /dir/
                        python3 -m pytest -v -s testsuit --alluredir=/data/allure-results'''
                    }
                }
            }
        }
        stage('test report') {
            steps {
                script{
                        allure commandline: 'allure command', includeProperties: false, jdk: '', report: 'allure-report', results: [[path: 'allure-results']]
                     }
            }
        }
    }
}

5. 问题

安装依赖包的时候会报各种错:

1) 安装paramiko报错:ModuleNotFoundError: No module named 'setuptools_rust'

# https://stackoverflow.com/questions/14426491/python-3-importerror-no-module-named-setuptools
sudo pip3 install -U pip setuptools  

# 下载包解压安装
tar -zxvf paramiko-2.6.0.tar.gz
sudo python3 setup.py build
sudo python3 setup.py install

2)  安装tornado :  ornado/speedups.c:2:20: fatal error: Python.h: No such file or directory

1 tar xvzf tornado-3.1.tar.gz
2 cd tornado-3.1
3 python setup.py build  

如果失败,报ornado/speedups.c:2:20: fatal error: Python.h: No such file or directory
先安装一些依赖环境:sudo yum install gcc python3-devel

4 sudo python setup.py install

3) Jenkins执行Python脚本:"message": "UnicodeEncodeError: 'ascii' codec can't encode characters in position 102-106: ordinal not in range(128)

脚本前增加环境变量:PYTHONIOENCODING = 'UTF-8'

4) java.io.IOException: Can't find allure commandline <null>

allure 命令的配置问题,确认执行机器上allure的路径和配置的一致。

notes:

4)nginx 安装步骤

# 安装依赖
sudo yum install -y openssl openssl-devel
yum install -y zlib zlib-devel

# 安装nginx
tar -zxf nginx-1.20.2.tar.gz
cd nginx-1.20.2

./configure --sbin-path=/home/work/tmp/sbin/nginx --conf-path=/home/work/tmp/conf/nginx.conf --pid-path=/home/work/tmp/var/nginx.pid --error-log-path=/home/work/tmp/log/error.log --with-http_ssl_module
make
sudo make install

# 查看版本
cd ../tmp/sbin
./nginx -V    # 也可复制到其他地方更新版本


# 启动
./nginx -c ./nginx.conf   # 使用指定配置文件启动


版权声明:本文为angl129原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。