# autotest **Repository Path**: lldhsds/autotest ## Basic Information - **Project Name**: autotest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-28 - **Last Updated**: 2026-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CloudOS 7.0 自动化测试项目 在POC项目交付完成环境后,在向客户演示之前,一般会进行自验证工作,确保环境安装、部署及配置均已正确,当前该部分工作需要手动进行验证。为了进一步提高POC项目效率,该部分进行了自动化覆盖,提供包括不限于如下使用场景: 1. 完成POC用例的自动化验证(仅限于内部POC用例); 2. 完成POC Demo演示资源的准备; 同时基于已经设计好的测试框架,可进一步拓展用于内部鉴定测试工作: 1. 环境升级之前的资源预置; 2. 性能测试,规格测试,稳定性测试等; 3. 测试资源的清理; ## 1. 测试框架 选用的自动化测试框架为:Pytest+Request+Allure。 ### 1.1 接口封装 接口封装采用面向对象对象设计,类图如下: ![CloudOS7.0 自动化框架封装类图](./res/CloudOS7.0 自动化框架封装类图.png) - 基础类`BaseObject`:封装日志打印方法,allure attach方法等; - http类`HttpObject`:封装http请求; - 用户控制台类`UcoBase`:封装用户控制台,提供登录、注销、项目管理、ak/sk管理、订单支付等方法。 - 云服务类,以云服务功能进行设计,例如云主机`UcoEcs`: 提供云服务对应的创建、删除、重启、续费、状态、列表等方法。 ### 1.2 代码仓库目录结构 代码仓库地址:http://10.0.112.183:9000/appraisal_center/unistack-auto.git 代码仓库采用双分支模型开发迭代,main`分支`用于日常环境测试,`develop`分支用于日常用例开发验证。 > 备注:gitlab为鉴定中心维护,联系guoruntao添加gitlab账号,授权访问git仓库。 ![目录说明](./res/目录说明.png) ## 2. 搭建客户端开发运行环境 测试执行有如下几种可以选择: 1. 测试终端安装git、python、pytest以及依赖等,然后执行测试用例。 2. 使用包含上述依赖的容器pytest镜像运行,需要手动克隆测试用例代码仓库。 3. 使用包含测试用例的容器镜像直接运行。 ### 2.1 终端测试环境 软件配套: | 工具 | 版本 | 备注 | | ------- | ------------------------------------ | --------------------------------- | | OS | Win10 22H2 | 建议使用win10及以上等桌面操作系统 | | PyCharm | PyCharm 2023.2.5 (Community Edition) | 或者使用VSCode | | Python | 3.12.6 | | | Pytest | 8.3.4 | | | Allure | 2.24.1 | | | 其他 | 使用pip安装 | 参考requirements安装 | 在测试机器依次安装如下软件: * PyCharm下载安装:[PyCharm下载安装](https://www.jetbrains.com.cn/en-us/pycharm/download/?section=windows) * Python下载安装:[Python下载安装](https://www.python.org/downloads/) * Pytest安装: `pip install pytest==8.3.4` * allure安装指导:[allure2安装配置](./docs/allure2安装配置.md) 克隆代码仓库,安装依赖然后运行试。 ```shell # 克隆代码仓库 git clone http://10.0.112.183:9000/appraisal_center/unistack-auto.git # 安装依赖 pip install -r requirements.txt ``` > 建议使用python虚拟环境运行。 ### 2.2 配置环境信息 根据测试环境信息修改配置文件,位于项目根路径`./config/env_config.yaml`,根据文件注释信息进行修改。 ## 3. 用例开发、调试及执行 在完成客户端环境准备后,即可进行自动化框架的开发、调试及运行。支持通过`pytest`命令运行,或者通过入口脚本`run_tests.py`运行。 ### 3.1 pytest运行 #### 全部用例执行 在项目根路径下执行`pytest`命令运行所有测试用例。 #### 执行特定用例 使用`-k`参数指定用例关键词,执行特定用例。 例如执行某一云服务产品相关的测试用例。如下命令执行postgresql的测试用例: ```bash pytest -k 'postgresql' ``` 例如执行某一云服务产品的某一个具体测试用例,如下命令执行ecs生命周期管理的测试用例: ```bash pytest .\tests\uco\db\rds\test_ecs_life_cycle.py ``` 可以通过特定的逻辑运算符来匹配多个关键字,支持and, or, not等逻辑运算符。例如运行包含 test 关键字但不包含 another 关键字的测试用例,可以使用以下命令: ```bash pytest -k "test and not another" ``` #### pycharm运行 使用pycharm打开自动化代码仓库文件,右键测试用例文件夹,使用pytest运行: ![pycharm-pytest-run](./res/pycharm-pytest-run.png) #### 多进程运行(推荐) 多进程运行: ```bash pytest -n 4 --dist=loadfile ``` 在使用 `pytest-xdist` 插件进行多进程执行测试用例时,默认情况下,测试用例是以**测试函数**为单位分配给不同的进程执行的。这意味着每个测试函数可以被独立地分配到不同的进程中,从而实现并行执行。 此外,`pytest-xdist` 提供了多种分发策略,可以通过 `--dist` 参数进行配置,以控制测试用例的分配方式: - `--dist=load`(默认):将测试用例逐个分配给可用的进程,适用于测试用例执行时间相对均衡的情况。 - `--dist=loadscope`:按照作用域(如模块、类)将测试用例分组,并将每个组分配给同一个进程执行,适用于需要在同一进程中执行的相关测试用例。 - `--dist=loadfile`:按照文件将测试用例分组,每个文件的测试用例在同一个进程中执行。 - `--dist=each`:将每个测试用例复制到所有的进程中执行,适用于需要在多个环境中验证相同测试用例的情况。 通过选择合适的分发策略,可以根据测试用例的特点和需求,优化测试执行的效率和效果。 ### 3.2 通过run_tests.py入口脚本运行 参考帮助文档运行测试用例: ```bash (venv) PS C:\Users\test\PycharmProjects\unistack-auto> python run_tests.py -h usage: run_tests.py [-h] [-k CASES] [-m MARKERS] [-q] [-s] [-v] [--maxfail MAXFAIL] [-n NUMPROCESSES] 自动化测试脚本:运行云平台自动化测试,基于pytest options: -h, --help 显示此帮助信息并退出 -k CASES 传给 pytest 的 -k 参数,用于关键字过滤测试用例 -m MARKERS 传给 pytest 的 -m 参数,用于按 marker 过滤测试用例 -q 启用 pytest 的 -q(quiet)模式,减少输出 -s 启用 pytest 的 -s 参数,显示标准输出 -v 启用 pytest 的 -v(verbose)模式,增加输出 --maxfail MAXFAIL 传给 pytest 的 --maxfail=N,遇到 N 个失败后停止测试 -n NUMPROCESSES 并发运行的进程数(需要安装 pytest-xdist 插件) 示例用法: 1. 执行vpc相关用例,减少输出,遇到2个失败后停止,使用2个进程: python run_tests.py -k vpc -q --maxfail 2 -n 2 ``` ## 4. 使用pytest容器运行测试用例 将pytest运行的依赖打包为容器镜像,目前已归档到内部harbor仓库,镜像地址:`harbor.jdzx.local/test/ubuntu20-python312-pytest:20250208` 。借助容器运行pytest用例。 ```bash # 克隆代码仓库 root@localhost:~# git clone http://10.0.112.183:9000/appraisal_center/unistack-auto.git root@localhost:~# cd unistack-auto/ root@localhost:~/unistack-auto# ls api config pytest.ini README.md requirements.txt res tests utils ``` 运行容器,映射本地代码仓库。在pytest容器中运行pytest用例。 ```bash root@localhost:~/unistack-auto# docker run -it -v /root/unistack-auto/:/pytest/unistack-auto harbor.jdzx.local/test/ubuntu20-python312-pytest:20250207 /bin/bash root@9920f8d7cfde:/pytest# ls Dockerfile Dockerfile.bak allure pip.conf python requirements.txt sources.list unistack-auto root@9920f8d7cfde:/pytest# cd unistack-auto/ root@9920f8d7cfde:/pytest/unistack-auto# pytest ``` ## 5. 容器测试镜像构建及运行测试用例 将测试用例仓库打包到容器镜像中,直接运行容器后自动运行测试用例。 ### 5.1 容器镜像构建 pytest容器镜像构建参考,包括安装python、pytest、allure、安装pytest依赖、克隆仓库等。 ```shell git clone http://10.0.112.183:9000/appraisal_center/unistack-auto.git cd unistack-auto/docker docker build -t harbor.jdzx.local/test/unistack-auto:v1.0.0 . ``` > **说明** > > `harbor.jdzx.local`为内部镜像仓库。 ### 5.2 容器运行测试用例 ```bash # 后台运行容器,不加参数 root@localhost:~ # docker run -itd harbor.jdzx.local/test/unistack-auto:v1.0.0 ece77ff044833166ccad8477ce9d610833dc41ff462f53a17033f75772f10508 # 查看容器日志打印测试用例执行情况 root@localhost:~/unistack-auto/docker# docker logs -f ece ``` ## 6. 结果查看 ### 6.1 pytest-html报告 pytest-html报告位于`./reports/pytest-html/`路径。 ### 6.2 allure2报告(推荐) #### 直接打开 在项目根路径下执行`allure serve ./reports/allure-results/`,会自动启动浏览器展示allure2报告。 ![allure-report](./res/allure-report.png) > **说明** > > 如果使用容器运行,在容器宿主机本地运行allure查看报告。 #### 先生成html文件再打开 根据元数据生成html文件: ```bash allure generate .\reports\allure-results\ -o .\reports\allure-resports\ --clean ``` 启动web服务器运行html文件: ```bash allure open .\reports\allure-resports\ ``` ## 7. 流水线运行 目前自动化项目已经对接jenkins流水线进行定时触发构建,jenkins地址如下: http://10.210.10.208:8080/ ,用户名:`admin` 密码:`1234.com` 目前已经创建两个项目,分别对接main分支和develop分支,其中`unistack_auto_daily`设置每天晚上10点进行测试,测试环境默认为鉴定中心环境。 ![jenkins-project](./res/jenkins-project.png) 关于jenkins的详细配置,可以参考下面文档: [jenkins配置pytest+allure自动化项目](./docs/jenkins配置pytest+allure自动化项目.md) 项目构建完成后,进入项目详情,即可查看详细的构建过程和allure报告。