Skip to content

一个便于快速开发的UI/微信小程序自动化测试脚手架

Notifications You must be signed in to change notification settings

behappy-project/behappy-test-automation

Repository files navigation

技术栈

要求:python3.10+

  • pytest + selenium + allure + xxl-job
  • 小程序:minium 【腾讯官方自动化框架】 + 微信开发者工具【开发者工具仅提供mac/windows,同时也没有对应的无头测试方案】
  • 服务器:windows【当需要利用gui运行的driver工具时,就会发现windows有多香了】

其它技术栈查阅 requirements.txt

image-20240704152207832

环境准备

安装系统依赖

  • 安装微软常用运行库合集_2023.05.15

安装python依赖模块

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装openjdk8或jdk8

安装maven

安装allure

allure下载

下载路径一:
在github上下载:https://github.com/allure-framework/allure2/releases
解压到指定文件夹

下载路径二:
在官网下载:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
Windows选择一个版本,并选择下载zip文件

环境变量配置

(1)下载完后直接解压到某路径下,在环境变量path中添加allure路径

img

(2)验证allure是否配置成功

allure --version

selenium server对应浏览器驱动

修改配置

  • config/web_ui_config.conf 配置web ui自动化的测试信息
  • config/projectName/projectName.conf 配置测试项目的信息

运行测试

API测试

  • python3 -u run_api_test.py --help
  • python3 -u run_api_test.py 运行cases/api/目录所有的用例
  • python3 -u run_api_test.py -k keyword 运行匹配关键字的用例,会匹配文件名、类名、方法名
  • python3 -u run_api_test.py -d dir 运行指定目录的用例,默认运行cases/api/目录
  • python3 -u run_api_test.py -m mark 运行指定标记的用例

web ui测试

  • python3 -u run_web_ui_test.py --help
  • python3 -u run_web_ui_test.py 运行cases/web_ui/目录所有的用例
  • python3 -u run_web_ui_test.py -k keyword 运行匹配关键字的用例,会匹配文件名、类名、方法名
  • python3 -u run_web_ui_test.py -d dir 运行指定目录的用例,默认运行cases/web_ui/目录
  • python3 -u run_web_ui_test.py -m mark 运行指定标记的用例
Write-Host "开始执行!!!"
# 多个mark以英文逗号拼接
$test_mark="xxx,xxx,xxx"
# 环境
$cmd_environment=$args[0..($args.Count-3)]
# 并行任务数量
$num="4"
# 是否清除case产生的数据
$need_clear=0
python -u run_web_ui_test.py -m "$test_mark" --cmd_environment "$cmd_environment" --num "$num" --need_clear $need_clear
Write-Host "Good bye!"
exit 0

小程序测试

chcp 65001
Write-Host "开始执行!!!"
# 使用utf8-nobom的方式写入文件
function Write-Utf8NoBom {
  param(
    [Parameter(Mandatory = $true)]
    [string] $Path,
    [Parameter(Mandatory = $true)]
    [string] $Content
  )
  # Convert the string content to a UTF-8 byte array
  $utf8Bytes = [System.Text.Encoding]::UTF8.GetBytes($Content)
  # Write the byte array to the specified file
  [System.IO.File]::WriteAllBytes($Path, $utf8Bytes)
}

# 执行case类型[可选值: byCases,bySuite]
$case_type="bySuite"
# 执行case文件[eg: wx_demo_project.test_data_project]
$case_file="xxx"
# 执行case名称[eg: test_weapp_u],不支持多个
$case_name="xxx"
# configJson文件路径[eg: config/wx_demo_project/config.json]
$config_json="xxx"
# suiteJson文件路径[eg: config/wx_demo_project/suite.json]
$config_suite="xxx"
# suite json param
$suiteJsonContent = @"
{
  "pkg_list": [
    {
      "case_list": [
        "test_weapp_u_1"
      ],
      "pkg": "cases.wx.wx_demo_project.test_*"
    },
    {
      "case_list": [
        "test_weapp_u_2"
      ],
      "pkg": "cases.wx.wx_demo_project.test_*"
    }
  ]
}
"@
# 清空$config_suite
Clear-Content "$config_suite"
# 重新写入
Write-Utf8NoBom -Path "$config_suite" -Content $suiteJsonContent
$local=0
# 环境
$cmd_environment=$args[0..($args.Count-3)]

python -u run_wx_test.py --local $local -ct "$case_type" -cf "$case_file" -cn "$case_name" -cj "$config_json" -cs "$config_suite"

Write-Host "Good bye!"
exit 0

生成测试报告

API测试

Write-Host "开始执行!!!"
# 清除任务类型
$need_clear=1
# 环境
$cmd_environment=$args[0..($args.Count-3)]
python -u generate_api_test_report.py --need_clear $need_clear --cmd_environment "$cmd_environment"
Write-Host "Good bye!"
exit 0

web ui测试

Write-Host "开始执行!!!"
# 浏览器类型,默认为谷歌
$test_type="-c True"
# 清除任务类型
$need_clear=1
# 环境
$cmd_environment=$args[0..($args.Count-3)]
python -u generate_web_ui_test_report.py "$test_type" --need_clear $need_clear --cmd_environment "$cmd_environment"
Write-Host "Good bye!"
exit 0

小程序测试

Write-Host "开始执行!!!"
# 类型【取决于config.json中配置的outputs路径】
$type="xxx"
# 环境
$cmd_environment=$args[0..($args.Count-3)]
python -u generate_wx_report.py --type "$type"
Write-Host "Good bye!"
exit 0

项目结构

  • base 基础请求类
  • cases 测试用例目录
  • common 公共模块
  • common_projects 每个项目的公共模块
  • config  配置文件
  • init 初始化/格式化
  • logs 日志目录
  • output 测试结果输出目录
  • page_objects 页面映射对象
  • pojo 存放自定义类对象
  • test_data 测试所需的测试数据目录
  • run_api_test.py 运行api测试脚本
  • run_web_ui_test.py 运行web ui测试脚本
  • run_wx_test.py 运行小程序测试脚本
  • generate_api_test_report.py 生成api测试报告
  • generate_web_ui_test_report.py 生成web ui测试报告
  • generate_wx_report.py 生成小程序测试报告

生产部署/运行

xxl-job-admin【2.4.0】

java -jar xxl-job-admin-2.4.0.jar

xxl-job-executor【2.4.0】

xxl-job-executor-sample-springboot-2.4.0.jar放在自动化测试项目的根目录下

java -jar xxl-job-executor-sample-springboot-2.4.0.jar --xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin --xxl.job.accessToken=default_token --xxl.job.executor.appname=xxl-a --xxl.job.executor.address=http://10.0.1.69:9998 --xxl.job.executor.port=9998 --server.port=8082
java -jar xxl-job-executor-sample-springboot-2.4.0.jar --xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin --xxl.job.accessToken=default_token --xxl.job.executor.appname=xxl-b --xxl.job.executor.address=http://10.0.1.69:9999 --xxl.job.executor.port=9999 --server.port=8081

...

About

一个便于快速开发的UI/微信小程序自动化测试脚手架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages