You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Jenkins Pipeline运行pywinauto测试用例?支持无人值守执行吗?

在Windows虚拟机通过Jenkins运行pywinauto GUI测试的实现方案

一、Windows虚拟机环境准备

要运行GUI测试,核心是确保Jenkins能在有交互桌面的会话中执行测试,先完成以下配置:

  • 部署Jenkins Agent:在Windows VM上安装Jenkins Agent,优先用JNLP方式启动(而非Windows服务),确保Agent运行在用户已登录的桌面会话中。如果必须用服务启动,需在服务属性中勾选「允许服务与桌面交互」,并将服务登录用户设为有权限访问桌面的本地管理员。
  • 安装依赖组件:
    1. 安装对应版本的Python,确保已添加到系统环境变量PATH
    2. 执行pip install pywinauto pytest(若用unittest框架则无需pytest,按需调整)
  • 系统权限与会话配置:
    • 开启Windows自动登录:通过netplwiz工具取消「要使用本计算机,用户必须输入用户名和密码」的勾选,设置自动登录账号,避免VM锁屏导致桌面会话失效
    • 配置电源选项:设置从不睡眠、从不关闭显示器、从不锁屏

二、用Jenkins Pipeline运行pywinauto测试

以下是完整的Pipeline示例,包含代码拉取、依赖安装、测试执行和结果归档:

pipeline {
    agent { label 'windows-gui-test-agent' } // 替换为你的Windows VM Agent标签
    stages {
        stage('拉取测试代码') {
            steps {
                git url: '你的测试代码仓库地址', branch: 'main'
            }
        }
        stage('安装依赖') {
            steps {
                bat 'pip install -r requirements.txt' // 假设requirements.txt包含pywinauto、pytest等依赖
            }
        }
        stage('执行GUI测试') {
            steps {
                // 若Agent以服务运行,需用psexec指定交互桌面会话(会话ID可通过query session命令查看)
                // bat 'psexec -i 1 python -m pytest tests/ -v --junitxml=pytest-results.xml'
                // 若Agent以JNLP在桌面会话运行,直接执行即可
                bat 'python -m pytest tests/ -v --junitxml=pytest-results.xml'
            }
        }
        stage('归档测试结果') {
            steps {
                junit 'pytest-results.xml'
            }
        }
    }
    post {
        always {
            // 可选:归档测试日志或截图
            archiveArtifacts artifacts: '**/*.log, **/*.png', allowEmptyArchive: true
        }
    }
}

关键注意事项:

  • 若测试需要启动被测GUI应用,需在测试代码中通过pywinauto启动(比如Application().start("path/to/your/app.exe")),确保应用和测试进程在同一个会话中
  • 若遇到窗口找不到的问题,可在测试代码中增加适当的等待时间,或用pywinauto.findwindows.find_elements()排查窗口状态

三、无人值守执行的支持

完全支持无人值守执行,但需满足以下条件:

  • Windows VM保持开机状态,且通过自动登录维持桌面会话不锁定
  • Jenkins Agent始终运行在有交互桌面的会话中(JNLP启动或服务配置允许交互)
  • 测试用例无人工交互依赖:所有GUI操作均由pywinauto实现,避免等待用户输入的逻辑
  • 可结合Jenkins的定时构建功能,实现定期自动执行测试

内容的提问来源于stack exchange,提问作者Debajyoti Sikdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:05:26