SSH/SFTP关键字插件,为pytest-dsl提供SSH和SFTP操作能力
Project description
pytest-dsl-ssh
基于 pytest-dsl 框架的 SSH/SFTP 自动化测试关键字插件。提供SSH远程命令执行、SFTP文件传输等功能。
特性
- 🔐 支持密码和密钥认证
- 🌐 灵活的服务器配置管理
- 📦 连接池复用连接
- 🔄 支持SFTP文件传输
- 📝 中文路径/文件名支持
- 🎯 自动配置加载
- 💡 丰富的错误处理
安装
使用 uv 进行包管理和依赖安装
# 创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate # Linux/macOS
# 或者 .venv\Scripts\activate # Windows
# 安装包
uv pip install .
使用 pip 安装
pip install .
快速开始
- 创建服务器配置文件
config/ssh_servers.yaml:
ssh_servers:
test_server: # 测试服务器(支持SSH和SFTP)
hostname: "localhost"
username: "testuser"
password: "testpass123"
port: 2222
description: "SSH/SFTP测试服务器"
tags: ["ssh", "sftp", "test"]
prod_server: # 生产服务器示例(使用私钥认证)
hostname: "prod.example.com"
username: "admin"
private_key_path: "~/.ssh/id_rsa"
port: 22
description: "生产环境服务器"
tags: ["production", "ssh", "sftp"]
- 创建测试用例
tests/dsl/test_ssh.dsl:
@name: "SSH/SFTP基本功能测试"
@description: "测试SSH连接、命令执行和SFTP文件传输功能"
@tags: ["ssh", "sftp", "basic", "connection"]
# SSH基本操作
连接结果 = [SSH测试连接], 服务器: "test_server"
命令结果 = [SSH执行命令], 服务器: "test_server", 命令: "echo 'Hello from SSH!'"
# SFTP文件传输(使用同一个服务器)
上传结果 = [SFTP上传文件], 服务器: "test_server", 本地文件: "test.txt", 远程文件: "/upload/test.txt"
注意: DSL语法中参数之间使用逗号和空格分隔。
- 运行测试:
pytest-dsl tests/dsl/test_ssh.dsl
支持的关键字
SSH 关键字
SSH连接- 建立SSH连接SSH测试连接- 测试SSH连接和基本命令SSH执行命令- 执行单条SSH命令SSH批量执行命令- 执行多条SSH命令SSH连接状态- 查询SSH连接状态SSH断开连接- 断开SSH连接
SFTP 关键字
SFTP上传文件- 上传单个文件SFTP下载文件- 下载单个文件SFTP上传目录- 递归上传目录SFTP下载目录- 递归下载目录SFTP创建目录- 创建远程目录SFTP删除文件- 删除远程文件SFTP删除目录- 删除远程目录SFTP列出目录- 获取目录列表SFTP文件信息- 获取文件属性
DSL示例
SSH命令执行
# 创建目录并写入文件
创建结果 = [SSH执行命令], 服务器: "test_server", 命令: "mkdir -p /tmp/test && echo 'hello' > /tmp/test/hello.txt"
# 读取文件内容
读取结果 = [SSH执行命令], 服务器: "test_server", 命令: "cat /tmp/test/hello.txt"
SFTP文件传输
# 上传目录
上传结果 = [SFTP上传目录], 服务器: "test_server", 本地目录: "test_data", 远程目录: "/upload/test", 保持时间戳: true
# 下载并检查文件
下载结果 = [SFTP下载文件], 服务器: "test_server", 远程文件: "/upload/test.txt", 本地文件: "download/test.txt"
服务器配置说明
重要提示:SSH和SFTP通常使用同一个连接和端口,因此一个服务器配置可以同时用于SSH命令执行和SFTP文件传输操作。
服务器配置支持以下字段:
hostname- 服务器地址port- SSH端口(默认22)username- 登录用户名password- 登录密码private_key_path- 私钥路径private_key_password- 私钥密码connect_timeout- 连接超时时间(默认10s)timeout- 命令超时时间(默认30s)compress- 是否启用压缩description- 服务器描述tags- 服务器标签
开发环境
使用 uv 进行项目依赖管理
# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate # Linux/macOS
# 或者 .venv\Scripts\activate # Windows
# 开发模式安装
uv pip install -e .
# 安装开发依赖
uv pip install -e ".[dev,test]"
启动测试环境
项目提供了Docker测试环境,可以快速启动SSH/SFTP测试服务器:
# 启动测试服务器
docker-compose up -d
# 查看服务状态
docker-compose ps
# 停止测试服务器
docker-compose down
测试服务器信息:
- SSH/SFTP服务器:
localhost:2222(用户名: testuser, 密码: testpass123) - 备用SSH服务器:
localhost:2223(用户名: testuser, 密码: testpass123)
运行测试
# 运行单元测试
pytest tests/unit/
# 运行集成测试(需要Docker环境)
pytest tests/integration/
# 运行DSL测试
pytest-dsl tests/dsl/
更多文档
许可证
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pytest_dsl_ssh-0.1.0.tar.gz
(117.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytest_dsl_ssh-0.1.0.tar.gz.
File metadata
- Download URL: pytest_dsl_ssh-0.1.0.tar.gz
- Upload date:
- Size: 117.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c8099f8f84d6ad1f08c80d8662d57f7b4f23a75711ab7d89a2420f46a57a1a8
|
|
| MD5 |
2bb4dcdf21f3da3087728312b4b6c389
|
|
| BLAKE2b-256 |
2d028e5706a972b5a89a59a1d09205d5849eb48a24accae80c51404d4e33fa21
|
File details
Details for the file pytest_dsl_ssh-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pytest_dsl_ssh-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59c8d5372bb9638137de3bbc6af44ed86b9aaa7eb421d4a6a71d1a3e600f2fb6
|
|
| MD5 |
aee686487e6bdd0d2814c5c910accd8b
|
|
| BLAKE2b-256 |
864911e10b52012705bbb3fcd8157c267c90766bec301adf0041e02d0a1e28a3
|