mcpField
S
setup-web-tests

setup-web-tests

github.com/posthog测试与质量40.5k243 次安装今天更新
代码仓库

关于 setup-web-tests

面向无法使用 flox 的 Claude Code for web 环境的 Python 测试配置指南,涵盖获取指定 Python 版本、安装依赖及配置所需服务。

主要功能

  1. 01安装项目要求的 Python 版本
  2. 02使用 uv 配置依赖
  3. 03通过 Docker 启动测试服务
  4. 04配置 hosts 与环境变量
  5. 05准备前端测试占位文件

适用场景

  1. 01在 Claude Code for web 中运行后端测试
  2. 02解决 Python 版本不匹配
  3. 03为测试准备本地服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/posthog/posthog --skill setup-web-tests

安装后在 Claude Code 中输入/setup-web-tests确认已加载。

详细介绍

Claude Code for web — 测试环境搭建

本文档介绍如何在 Claude Code for web 环境中搭建并运行 Python 测试,该环境中无法使用 flox。

如果你在按照这些说明操作时遇到困难,请停止操作并向用户寻求指导。请建议他们更新本指南。

问题

该项目需要 pyproject.toml 中指定的特定 Python 版本(请查看 requires-python),但是:

  • Claude Code for web 环境可能使用不同的系统 Python 版本
  • 如果该版本尚未被 uv 收录,uv python install <version> 可能会失败
  • uv sync 会强制要求精确的版本约束,Python 版本不正确时会失败

解决方案:从 python-build-standalone 下载 Python

从 python-build-standalone 的 GitHub releases 下载所需的确切版本。下面的脚本会自动从 pyproject.toml 中检测所需版本:

# Auto-detect the required version from pyproject.toml
REQUIRED_VERSION=$(grep requires-python pyproject.toml | grep -oP '[\d.]+')
echo "Required Python: $REQUIRED_VERSION"

# Get the latest release tag from python-build-standalone
RELEASE_TAG=$(curl -sL "https://api.github.com/repos/astral-sh/python-build-standalone/releases/latest" | grep '"tag_name"' | cut -d'"' -f4)

# Find and download the matching build
DOWNLOAD_URL=$(curl -sL "https://api.github.com/repos/astral-sh/python-build-standalone/releases/latest" | \
  grep "browser_download_url" | grep "$REQUIRED_VERSION" | grep "x86_64-unknown-linux-gnu-install_only.tar.gz" | head -1 | cut -d'"' -f4)

mkdir -p /tmp/python-install && cd /tmp/python-install
curl -L -o python.tar.gz "$DOWNLOAD_URL"
tar -xzf python.tar.gz

# Verify
/tmp/python-install/python/bin/python3 --version

如果自动检测未能找到 URL(例如版本过新),请手动浏览 releases 页面,寻找 cpython-<version>+<tag>-x86_64-unknown-linux-gnu-install_only.tar.gz 资源。

安装依赖并运行测试
cd /home/user/posthog
uv sync --python /tmp/python-install/python/bin/python3
source .venv/bin/activate

# Run a specific test (if hogli is available)
hogli test path/to/test.py::TestClass::test_method -v

# Or use pytest directly
pytest path/to/test.py::TestClass::test_method -v

# Run all tests in a directory
hogli test posthog/hogql/test/ -v

Docker 服务

大多数测试需要后端服务处于运行状态。如果 Docker 可用,请使用以下命令启动它们:

docker compose -f docker-compose.dev.yml up -d

完整服务列表和端口请参阅 docker-compose.dev.yml。某些测试目录有其特定的服务要求,记录在各自的配置文件中。

hosts 文件设置

测试需要将某些主机名解析到 localhost:

echo "127.0.0.1 kafka clickhouse clickhouse-coordinator objectstorage" | sudo tee -a /etc/hosts

环境变量

测试需要 .github/workflows/ci-backend.yml 中定义的环境变量(请参阅文件顶部的 env: 部分)。你也可以将 .env.example 复制为 .env,以获得本地开发的默认值。

附加设置

前端 dist 占位文件

某些测试需要前端构建产物存在(即使为空):

mkdir -p frontend/dist
touch frontend/dist/index.html
touch frontend/dist/layout.html
touch frontend/dist/exporter.html
SAML 依赖(如需要)

对于 SAML 相关功能:

sudo apt-get update
sudo apt-get install libxml2-dev libxmlsec1-dev libxmlsec1-openssl

Pytest 配置

pytest.ini 设置了:

  • pythonpath = . common
  • DJANGO_SETTINGS_MODULE = posthog.settings
  • DEBUG=1、TEST=1

默认忽略:--ignore=posthog/user_scripts --ignore=services/llm-gateway --ignore=common/ingestion/acceptance_tests

调试安装问题

如果你在测试环境搭建过程中遇到问题,请参阅 .github/workflows/ci-backend.yml 以获取权威的 CI 配置。该文件展示了:

  • CI 中使用的确切 Python 版本
  • 安装的系统依赖
  • 设置的环境变量
  • Docker 服务配置
  • 测试执行命令

限制

  • Docker 不可用:需要服务的测试在没有 Docker 的情况下会失败
  • 网络限制:下载 Python 需要访问 GitHub
  • Temporal 测试:需要额外的 Temporal 服务设置

评论

支持 Markdown