Files
Yb-QaAutomationHub/tests/config/test_config.yaml
T
xst 26b6fa9c1a fix(api): ETC 发票 INSERT 中 URL 签名 %3D 在参数化 SQL 下按 %% 转义
pymysql 执行 sql % params 时把字面量 %3D 当作格式符,抛
unsupported format character 'D' (index 906)。参数化模板中的字面量
百分号必须写成 %%,渲染后仍为 %3D,与旧工具 f-string 产出的 SQL 一致。
已用 pymysql 同款插值离线验证全部 7 类模板渲染通过。
2026-09-08 11:53:22 +08:00

250 lines
12 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 运八网络货运平台 — 测试环境配置
# 数据来源: knowledge_base/00_project/project_profile.md
# 使用方式: from tests.core.config_loader import load_config
#
# 覆盖端:
# Web: 管理端 admin / 司机端小程序 mini_program
# App: 司机安卓 driver_android
# (预留: 货主安卓 shipper_android / 苹果端 driver_ios / shipper_ios)
# ═══════════════════════════════════════════════════════════════════
# ── 管理端 (Web/Playwright) ──
# ═══════════════════════════════════════════════════════════════════
admin:
base_url: "https://ybxcx.ynyun8.com:8000/admin"
api_base_url: "https://ybxcx.ynyun8.com:8000/"
timeout_seconds: 120
screenshot_on_failure: true
screenshot_on_step: false
browsers:
- chromium
- firefox
viewport:
width: 1920
height: 1080
# 登录态复用: python tests/web/admin/save_auth.py 生成后自动跳过验证码
skip_login: true
storage_state_dir: "tests/web/auth"
# ═══════════════════════════════════════════════════════════════════
# ── 司机端小程序 (miniprogram-automator / Node.js) ──
# ═══════════════════════════════════════════════════════════════════
# 原理: Python pytest → subprocess → node runner.js → miniprogram-automator
# 操控微信开发者工具中的小程序,返回 JSON 结果
#
# 前置条件:
# 1. 安装微信开发者工具 + 开启服务端口(设置 → 安全 → 服务端口)
# 2. uni-app 编译为微信小程序: npm run build:mp-weixin
# 3. 安装依赖: cd tests/web/mini_program/automator && npm install
mini_program:
# uni-app 编译出的小程序项目路径(.js/.json/.wxml 所在目录)
project_path: "E:/test/QaAutomationHub/mini_program/dist" # ⚠️ 请确认实际路径
# 微信开发者工具 CLI 路径(Windows 默认如下,macOS 为 /Applications/...)
dev_tool_path: "C:/Program Files (x86)/Tencent/微信web开发者工具/cli.bat"
timeout_seconds: 120
screenshot_on_failure: true
# ═══════════════════════════════════════════════════════════════════
# ── 司机安卓端 (App/Appium) ──
# ═══════════════════════════════════════════════════════════════════
driver_android:
appium_host: "http://localhost:4723"
timeout_seconds: 120
screenshot_on_failure: true
platform: android
skip_login: true # 手动登录一次后 noReset 自动复用
device_name: "Android Emulator"
app_package: "com.arpa.ynchenggangdriver" # ⚠️ 请确认实际包名
app_activity: "com.arpa.ntocc.MainActivity" # ⚠️ 请确认实际启动 Activity
no_reset: true
new_command_timeout: 120
# ═══════════════════════════════════════════════════════════════════
# ── 货主安卓端 (App/Appium) ──
# ═══════════════════════════════════════════════════════════════════
shipper_android:
appium_host: "http://localhost:4723"
timeout_seconds: 120
screenshot_on_failure: true
platform: android
skip_login: true
device_name: "Android Emulator"
app_package: "com.arpa.ynChengGangShipper" # ⚠️ 请确认实际包名
app_activity: "com.arpa.wuche_shipper.MainActivity" # ⚠️ 请确认实际启动 Activity
no_reset: true
new_command_timeout: 120
# ═══════════════════════════════════════════════════════════════════
# ── 司机苹果端 (App/Appium,需 macOS) ──
# ═══════════════════════════════════════════════════════════════════
driver_ios:
appium_host: "http://localhost:4723"
timeout_seconds: 120
screenshot_on_failure: true
platform: ios
skip_login: true
device_name: "iPhone 15"
bundle_id: "com.arpa.ynchenggangdriver" # ⚠️ 请确认实际 Bundle ID
no_reset: true
new_command_timeout: 120
# ═══════════════════════════════════════════════════════════════════
# ── 货主苹果端 (App/Appium,需 macOS) ──
# ═══════════════════════════════════════════════════════════════════
shipper_ios:
appium_host: "http://localhost:4723"
timeout_seconds: 120
screenshot_on_failure: true
platform: ios
skip_login: true
device_name: "iPhone 15"
bundle_id: "com.yunba.shipper" # ⚠️ 请确认实际 Bundle ID
no_reset: true
new_command_timeout: 120
# ═══════════════════════════════════════════════════════════════════
# ── 测试账号 ──
# ═══════════════════════════════════════════════════════════════════
accounts:
super_admin:
phone: "super_admin"
password: "951260684NiAi.."
role: "平台运营人员"
use_on: [admin]
team_leader:
phone: "13113113113"
password: "88888888"
role: "车队长"
use_on: [admin, mini_program]
driver:
phone: "15188888888"
password: "88888888"
role: "司机"
use_on: [mini_program, driver_android, driver_ios]
shipper:
phone: "13800000000" # ⚠️ 请确认实际货主账号
password: "88888888"
role: "货主"
use_on: [shipper_android, shipper_ios]
# ═══════════════════════════════════════════════════════════════════
# ── 数据库 (tests/core/db_helper.py 使用) ──
# ═══════════════════════════════════════════════════════════════════
database:
host: "36.137.133.24"
port: 3306
user: "ntocc"
password: "Rgxi3!kD9jjXpgzx"
database: "ntocc"
charset: "utf8mb4"
# ═══════════════════════════════════════════════════════════════════
# ── yun8 运输流程 API 造数 (tests/apis/yun8 + tests/api) ──
# 对应 Postman Collection: yun8.postman_collection.json(18 接口 + SQL)
# 数据库连接复用上方 database 段
# ═══════════════════════════════════════════════════════════════════
yun8_api:
base_url: "https://ybxcx.ynyun8.com:8000"
verify_ssl: false
timeout_seconds: 60 # 单请求超时(旧工具无超时,迁移后新增)
# 通用请求头(与 Postman Collection 一致)
common_headers:
host: "ybxcx.ynyun8.com:8000"
accept-language: "zh-CN,zh;q=0.9,en;q=0.8"
accept-encoding: "gzip"
# 司机端 Header(步骤1-5)
driver_headers:
deviceid: "A58FBAB7161EA82309491FB06CDE9687"
user-agent: "okhttp-okgo/jeasonlzy"
# 管理端 Header(步骤6-16)
admin_headers:
deviceid: "0000000000"
secret: "GouldAMap=d58bb5f7da1aa1d6b78741ded2450f2d"
user-agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 Edg/149.0.0.0"
accept: "application/json, text/plain, */*"
referer: "https://ybxcx.ynyun8.com:8000/admin/"
# 授权 Token(CLI --auth-driver / --auth-admin 可覆盖)
tokens:
driver_token: "Bearer YQZOMJWOYljNZJGN0XT23kFONQJZmDRNlm20lTTYYAUY4YjhiZTj0cDlhDjw" # 司机端 Bearer token (含 Bearer 前缀)
admin_token: "Bearer ODQOORZNlTTZyIWl0DTMMJIZMdX0yEDOYkjkyGmjlZQMZFWOjZlYjDGk0U==" # 管理端 Bearer token (含 Bearer 前缀)
# 司机端固定参数(装货/卸货)
driver_params:
# 重量模式: "fixed"(固定值) / "random"(每次随机 1-10 小数)
weight_mode: "random"
per_weight: "10" # fixed 模式下的接单单位重量
weight: "10" # fixed 模式下的装货/卸货重量
# 装货/卸货经纬度(不为空时覆盖货源接口返回值)
# 历史环境坐标备查(手工切换时取消注释并覆盖上方对应键):
# load_latitude: "38.5166" # 接单+装货纬度
# load_longitude: "102.308617" # 接单+装货经度
# unload_latitude: "38.529333" # 卸货纬度
# unload_longitude: "102.25395" # 卸货经度
# load_latitude: "28.116007" # 接单+装货纬度
# load_longitude: "112.982951" # 接单+装货经度
# unload_latitude: "30.663179" # 卸货纬度
# unload_longitude: "104.039285" # 卸货经度
load_latitude: "" # 接单+装货纬度
load_longitude: "" # 接单+装货经度
unload_latitude: "" # 卸货纬度
unload_longitude: "" # 卸货经度
# 待运输单重置(清掉旧记录后重新查询,仅影响司机端流程)
reset_order_detail: false # true=step03后执行DELETE+UPDATE再重新查询
reset_order_detail_code: "f234118ee56d4b3db4ae1eeb97b0b194" # DELETE+UPDATE SET 使用的固定 code
# 通用经纬度兜底(当上述配置和接口返回值都为空时使用)
latitude: "25.005731558883365"
longitude: "102.652599407955"
# 装货照片 URL
load_img_url: "https://ynyun8.eos-chongqing-1.cmecloud.cn/2026-06-30/88a6ff85d8ad4e26bf1571d59ae4f60c.jpg?AWSAccessKeyId=AOS5YGU0MP2Y88ELIFFH&Expires=4102329600&Signature=s68ODdXZ%2BI9s09IbaPwLy6Hefxw%3D"
# 卸货照片 URL
unload_img_url: "https://ynyun8.eos-chongqing-1.cmecloud.cn/2026-06-30/66426dc5be6242968dd9a3d0fd6e8b38.jpg?AWSAccessKeyId=AOS5YGU0MP2Y88ELIFFH&Expires=4102329600&Signature=UVKmwyFEnzA4fh%2BmnlGzmDOmuJE%3D"
# 核算固定参数
accounting:
branch_code: "49adb23841asw3118yunnanchenggang"
business_type_code: "1003999"
payee_code: "16d0c260f7e34967b36113c770e03486"
shipment_phone: "15198908093"
shipment_party_code: "ce8b73b38cf6450d84740cf23aa4ed52"
settlement_type: "2"
# 队长分账:payer_receiver/link_man 不为空 且 captainSplitMode=2 时触发
payer_receiver: "" # 收款人
payer_receiver_link_man: "" # 收款联系人
captain_split_mode: "0" # 队长分账模式 (0=不分账, 2=分账)
execute_after_audit: true # 审核通过后是否执行分账/付款/回单等后续步骤(12-21)
# 垫资/付款固定参数
payment:
pay_types: "3,4,5,9,10,11"
pay_platform: "3"
sms_code: "1234"
phone: "13888888888"
pay_type: "arpa_2"
# ETC 开票 (步骤 22)
etc_invoice:
count: 3 # 每个运单插入的发票条数; 金额合计受运费×50%约束
# 回单 file_name 格式(INSERT 语句本体在 tests/apis/yun8/sql_templates.py)
sql:
file_name_template: "{file_prefix}_1_signed.pdf"
# 第三方端(滇运通审核,独立 token / host,可选执行)
dianyuntong:
enabled: false # true=执行, false=跳过
base_url: "https://yndyt.cxtech.vip"
token: "Bearer NTmlyQYMYYEMwDTy1DDyxWjwykNZyQGO0jDOYYAMMQcNMgMN3jTy0jTYZlZh" # 独立 Bearer Token
cookie: "" # Cookie 字符串 (Admin-Token=xxx; sl-session=xxx)