【人工智能】OpenClaw(一):MacOS极简安装OpenClaw之Docker版

【人工智能】OpenClaw(一):MacOS极简安装OpenClaw之Docker版

目录

一、背景

二、安装教程

2.1 MacOS安装Docker​编辑

2.2 下载OpenClaw镜像

2.3 启动OpenClaw镜像+安装引导

2.4 自己购买的大模型API配置

2.5 飞书配置

2.5.1 打开飞书开放平台

2.5.2 创建应用

2.5.3 创建机器人

2.5.4 权限管理

2.5.5 事件与回调

2.5.6 新建版本

2.6 Skills及其他配置

2.7 启动openclaw容器(container)

2.8 openclaw容器内启动gateway

2.9 openclaw容器内使用tui对话

2.9.1 docker应用内对话

2.9.2 新开终端对话

2.10 openclaw与飞书配对

2.10.1 回到飞书与机器人聊天,会提示需要配对

2.10.2 在docker的Container终端内运行

2.10.3 回到飞书继续聊天——大功告成!

三、总结


一、背景

OpenClaw最近实在是太火了,作为ZEEKLOG认证的“优质人工智能博主”,不跟进有点说不过去了,还是一贯的风格,尽量极简让你养上自己的小龙虾。

在当下企业协同办公与AI智能化应用深度融合的趋势下,越来越多团队需要一款轻量化、易部署、可自定义对接的AI助手工具,实现大模型能力与日常办公协作平台的无缝衔接,提升内部沟通、信息处理、任务执行的效率。OpenClaw作为一款开源的AI助手框架,具备跨平台部署、灵活对接各类大模型API、适配主流协同办公工具的核心优势,能够帮助个人和中小企业快速搭建专属的AI协作机器人,无需复杂的底层开发,即可实现AI对话、任务处理、信息调取等实用功能。

相较于传统的AI工具部署方式,基于Docker部署OpenClaw能够最大程度规避不同操作系统的环境兼容问题,实现环境隔离、一键启停和便捷维护,尤其适合非专业运维人员快速上手。而飞书作为国内主流的企业协同办公平台,将OpenClaw与飞书机器人集成,能够让团队成员直接在飞书聊天界面调用AI能力,无需切换软件,真正实现办公场景与AI能力的闭环融合。本教程针对MacOS系统用户,梳理了从Docker环境搭建、OpenClaw镜像部署、大模型API配置到飞书机器人对接、功能调试的全流程实操步骤,解决新手部署过程中环境报错、配置遗漏、对接失败等常见问题,帮助用户快速完成专属AI办公助手的搭建,落地轻量化AI办公应用。

二、安装教程

2.1 MacOS安装Docker

2.2 下载OpenClaw镜像

docker pull openeuler/openclaw:2026.3.2-oe2403sp3

2.3 启动OpenClaw镜像+安装引导

docker run -it --name openclaw openeuler/openclaw:2026.3.2-oe2403sp3 onboard --install-daemon

2.4 自己购买的大模型API配置

◇ I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?(“我明白这是默认个人私有的,共享/多用户使用则需要加以限制。是否继续?”) │ Yes │ ◇ Onboarding mode │ QuickStart │ ◇ QuickStart ─────────────────────────╮ │ │ │ Gateway port: 18789 │ │ Gateway bind: Loopback (127.0.0.1) │ │ Gateway auth: Token (default) │ │ Tailscale exposure: Off │ │ Direct to chat channels. │ │ │ ├──────────────────────────────────────╯ │ ◇ Model/auth provider │ Custom Provider │ ◇ API Base URL │ https://api.xxxx.com/v1(自己大模型服务的api) │ ◇ How do you want to provide this API key? │ Paste API key now │ ◇ API Key (leave blank if not required) │ sk-XXXXXXXXXXXXXXXXXXXXX(自己大模型服务的API Key) │ ◇ Endpoint compatibility │ OpenAI-compatible │ ◇ Model ID │ claude-sonnet-4-6(自己大模型服务的模型ID) │ ◇ Verification successful. │ ◇ Endpoint ID │ custom-api-xxx-ai(自定义EndpointID) │ ◇ Model alias (optional) │ Configured custom provider: custom-api-xxx-ai/claude-sonnet-4-6

2.5 飞书配置

2.5.1 打开飞书开放平台

2.5.2 创建应用

2.5.3 创建机器人

进入应用—添加应用能力—机器人

2.5.4 权限管理

批量导入权限

批量权限json(或参考https://docs.openclaw.ai/zh-CN/channels/feishu

{ "scopes": { "tenant": [ "aily:file:read", "aily:file:write", "aily:session:read", "aily:session:write", "application:application.app_message_stats.overview:readonly", "application:application:self_manage", "application:bot.menu:write", "bitable:app", "bitable:app:readonly", "board:whiteboard:node:create", "board:whiteboard:node:delete", "board:whiteboard:node:read", "board:whiteboard:node:update", "cardkit:card:write", "contact:contact.base:readonly", "contact:user.base:readonly", "contact:user.employee_id:readonly", "corehr:file:download", "docs:doc", "docs:doc:readonly", "docs:document.comment:create", "docs:document.comment:read", "docs:document.comment:update", "docs:document.comment:write_only", "docs:document.content:read", "docs:document.media:download", "docs:document.media:upload", "docs:document.subscription", "docs:document.subscription:read", "docs:document:copy", "docs:document:export", "docs:document:import", "docs:event.document_deleted:read", "docs:event.document_edited:read", "docs:event.document_opened:read", "docs:event:subscribe", "docs:permission.member", "docs:permission.member:auth", "docs:permission.member:create", "docs:permission.member:delete", "docs:permission.member:readonly", "docs:permission.member:retrieve", "docs:permission.member:transfer", "docs:permission.member:update", "docs:permission.setting", "docs:permission.setting:read", "docs:permission.setting:readonly", "docs:permission.setting:write_only", "docx:document", "docx:document.block:convert", "docx:document:create", "docx:document:readonly", "docx:document:write_only", "drive:drive", "drive:drive.metadata:readonly", "drive:drive.search:readonly", "drive:drive:readonly", "drive:drive:version", "drive:drive:version:readonly", "drive:export:readonly", "drive:file", "drive:file.like:readonly", "drive:file.meta.sec_label.read_only", "drive:file:download", "drive:file:readonly", "drive:file:upload", "drive:file:view_record:readonly", "event:ip_list", "im:chat", "im:chat.access_event.bot_p2p_chat:read", "im:chat.members:bot_access", "im:message", "im:message.group_at_msg:readonly", "im:message.group_msg", "im:message.p2p_msg:readonly", "im:message:readonly", "im:message:send_as_bot", "im:resource", "sheets:spreadsheet", "sheets:spreadsheet.meta:read", "sheets:spreadsheet.meta:write_only", "sheets:spreadsheet:create", "sheets:spreadsheet:read", "sheets:spreadsheet:readonly", "sheets:spreadsheet:write_only", "slides:presentation:create", "slides:presentation:read", "slides:presentation:update", "slides:presentation:write_only", "space:document.event:read", "space:document:delete", "space:document:move", "space:document:retrieve", "space:document:shortcut", "space:folder:create", "wiki:member:create", "wiki:member:retrieve", "wiki:member:update", "wiki:node:copy", "wiki:node:create", "wiki:node:move", "wiki:node:read", "wiki:node:retrieve", "wiki:node:update", "wiki:setting:read", "wiki:setting:write_only", "wiki:space:read", "wiki:space:retrieve", "wiki:space:write_only", "wiki:wiki", "wiki:wiki:readonly" ], "user": [ "aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read" ] } }

2.5.5 事件与回调

使用长链接接收事件

创建长链接环境

conda create -n py38 python=3.8 conda activate py38 pip install lark-oapi -U
import lark_oapi as lark ## P2ImMessageReceiveV1 为接收消息 v2.0;CustomizedEvent 内的 message 为接收消息 v1.0。 def do_p2_im_message_receive_v1(data: lark.im.v1.P2ImMessageReceiveV1) -> None: print(f'[ do_p2_im_message_receive_v1 access ], data: {lark.JSON.marshal(data, indent=4)}') def do_message_event(data: lark.CustomizedEvent) -> None: print(f'[ do_customized_event access ], type: message, data: {lark.JSON.marshal(data, indent=4)}') event_handler = lark.EventDispatcherHandler.builder("", "") \ .register_p2_im_message_receive_v1(do_p2_im_message_receive_v1) \ .register_p1_customized_event("这里填入你要自定义订阅的 event 的 key,例如 out_approval", do_message_event) \ .build() def main(): cli = lark.ws.Client("配置成应用的App Id", "配置成应用的App Secret", event_handler=event_handler, log_level=lark.LogLevel.DEBUG) cli.start() if __name__ == "__main__": main()

启动长链接

python feishu_ws.py

启动长链接后,“事件配置”与“回调配置”中的“保存”可以点击了(否则点不动)

“事件配置”中,添加所有“消息与群组”

“回调配置”中,添加所有回调

2.5.6 新建版本

版本发布后,飞书会收到“开发者小助手”的审批通过,发布成功的消息,打开应用,出现机器人聊天对话框。

OpenClaw的飞书配置

◇ Channel status ────────────────────────────╮ │ │ │ Telegram: needs token │ │ WhatsApp (default): not linked │ │ Discord: needs token │ │ Slack: needs tokens │ │ Signal: needs setup │ │ signal-cli: missing (signal-cli) │ │ iMessage: needs setup │ │ imsg: missing (imsg) │ │ IRC: not configured │ │ Google Chat: not configured │ │ Feishu: install plugin to enable │ │ Google Chat: install plugin to enable │ │ Nostr: install plugin to enable │ │ Microsoft Teams: install plugin to enable │ │ Mattermost: install plugin to enable │ │ Nextcloud Talk: install plugin to enable │ │ Matrix: install plugin to enable │ │ BlueBubbles: install plugin to enable │ │ LINE: install plugin to enable │ │ Zalo: install plugin to enable │ │ Zalo Personal: install plugin to enable │ │ Synology Chat: install plugin to enable │ │ Tlon: install plugin to enable │ │ │ ├─────────────────────────────────────────────╯ │ ◇ How channels work ───────────────────────────────────────────────────────────────────────╮ │ │ │ DM security: default is pairing; unknown DMs get a pairing code. │ │ Approve with: openclaw pairing approve <channel> <code> │ │ Public DMs require dmPolicy="open" + allowFrom=["*"]. │ │ Multi-user DMs: run: openclaw config set session.dmScope "per-channel-peer" (or │ │ "per-account-channel-peer" for multi-account channels) to isolate sessions. │ │ Docs: channels/pairing │ │ │ │ Telegram: simplest way to get started — register a bot with @BotFather and get going. │ │ WhatsApp: works with your own number; recommend a separate phone + eSIM. │ │ Discord: very well supported right now. │ │ IRC: classic IRC networks with DM/channel routing and pairing controls. │ │ Google Chat: Google Workspace Chat app with HTTP webhook. │ │ Slack: supported (Socket Mode). │ │ Signal: signal-cli linked device; more setup (David Reagans: "Hop on Discord."). │ │ iMessage: this is still a work in progress. │ │ Feishu: 飞书/Lark enterprise messaging with doc/wiki/drive tools. │ │ Nostr: Decentralized protocol; encrypted DMs via NIP-04. │ │ Microsoft Teams: Bot Framework; enterprise support. │ │ Mattermost: self-hosted Slack-style chat; install the plugin to enable. │ │ Nextcloud Talk: Self-hosted chat via Nextcloud Talk webhook bots. │ │ Matrix: open protocol; install the plugin to enable. │ │ BlueBubbles: iMessage via the BlueBubbles mac app + REST API. │ │ LINE: LINE Messaging API bot for Japan/Taiwan/Thailand markets. │ │ Zalo: Vietnam-focused messaging platform with Bot API. │ │ Zalo Personal: Zalo personal account via QR code login. │ │ Synology Chat: Connect your Synology NAS Chat to OpenClaw with full agent capabilities. │ │ Tlon: decentralized messaging on Urbit; install the plugin to enable. │ │ │ ├───────────────────────────────────────────────────────────────────────────────────────────╯ │ ◇ Select channel (QuickStart) │ Feishu/Lark (飞书) │ ◇ Install Feishu plugin? │ Download from npm (@openclaw/feishu) Downloading @openclaw/feishu… Extracting /tmp/openclaw-npm-pack-jlpXLF/openclaw-feishu-2026.3.13.tgz… WARNING: Plugin "feishu" contains dangerous code patterns: Environment variable access combined with network send — possible credential harvesting (/tmp/openclaw-plugin-62J8G3/extract/package/src/client.test.ts:74); Environment variable access combined with network send — possible credential harvesting (/tmp/openclaw-plugin-62J8G3/extract/package/src/client.ts:12) Installing to /root/.openclaw/extensions/feishu… Installing plugin dependencies… 12:38:31 [plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: feishu (/root/.openclaw/extensions/feishu/index.ts). Set plugins.allow to explicit trusted ids. │ ◇ Feishu credentials ──────────────────────────────────────────────────────────────╮ │ │ │ 1) Go to Feishu Open Platform (open.feishu.cn) │ │ 2) Create a self-built app │ │ 3) Get App ID and App Secret from Credentials page │ │ 4) Enable required permissions: im:message, im:chat, contact:user.base:readonly │ │ 5) Publish the app or add it to a test group │ │ Tip: you can also set FEISHU_APP_ID / FEISHU_APP_SECRET env vars. │ │ Docs: feishu │ │ │ ├───────────────────────────────────────────────────────────────────────────────────╯ │ ◇ How do you want to provide this App Secret? │ Enter App Secret │ ◇ Enter Feishu App Secret │ XXXXXXXXXXXXXXXXXXXX │ ◇ Enter Feishu App ID │ XXXXXXXXXXXXXXXX [info]: [ 'client ready' ] │ ◇ Feishu connection test ───────────────────────────╮ │ │ │ Connected as ou_XXXXXXXXXXX │ │ │ ├────────────────────────────────────────────────────╯ │ ◇ Feishu connection mode │ WebSocket (default) │ ◇ Which Feishu domain? │ Feishu (feishu.cn) - China │ ◇ Group chat policy │ Open - respond in all groups (requires mention) │ ◇ Selected channels ──────────────────────────────────────────╮ │ │ │ Feishu — 飞书/Lark enterprise messaging. Docs: │ │ feishu │ │ │ ├──────────────────────────────────────────────────────────────╯ Config warnings: - plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Updated ~/.openclaw/openclaw.json Workspace OK: ~/.openclaw/workspace Sessions OK: ~/.openclaw/agents/main/sessions

2.6 Skills及其他配置

默认先选“no”或“skip”

◇ Skills status ─────────────╮ │ │ │ Eligible: 7 │ │ Missing requirements: 41 │ │ Unsupported on this OS: 7 │ │ Blocked by allowlist: 0 │ │ │ ├─────────────────────────────╯ │ ◇ Configure skills now? (recommended) │ No │ ◇ Hooks ──────────────────────────────────────────────────────────────────╮ │ │ │ Hooks let you automate actions when agent commands are issued. │ │ Example: Save session context to memory when you issue /new or /reset. │ │ │ │ Learn more: https://docs.openclaw.ai/automation/hooks │ │ │ ├──────────────────────────────────────────────────────────────────────────╯ │ ◇ Enable hooks? │ Skip for now Config warnings: - plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Config overwrite: /root/.openclaw/openclaw.json (sha256 39b96fed22c10c899a69792e607481ecf7d50b58f30be76a2451fd34630ab5a7 -> 21a9d0e63b76cf77d1b268e539c9a5eeba5e3f47e8981a9ba65f5295d91e11da, backup=/root/.openclaw/openclaw.json.bak) │ ◇ Systemd ───────────────────────────────────────────────────────────────────────────────╮ │ │ │ Systemd user services are unavailable. Skipping lingering checks and service install. │ │ │ ├─────────────────────────────────────────────────────────────────────────────────────────╯ │ ◇ Gateway service ─────────────────────────────────────────────────────────────────────╮ │ │ │ Systemd user services are unavailable; skipping service install. Use your container │ │ supervisor or `docker compose up -d`. │ │ │ ├───────────────────────────────────────────────────────────────────────────────────────╯ Config warnings:\n- plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Config warnings:\n- plugins.entries.feishu: plugin feishu: duplicate plugin id detected; later plugin may be overridden (/root/.openclaw/extensions/feishu/index.ts) Health check failed: gateway closed (1006 abnormal closure (no close frame)): no close reason Gateway target: ws://127.0.0.1:18789 Source: local loopback Config: /root/.openclaw/openclaw.json Bind: loopback │ ◇ Health check help ────────────────────────────────╮ │ │ │ Docs: │ │ https://docs.openclaw.ai/gateway/health │ │ https://docs.openclaw.ai/gateway/troubleshooting │ │ │ ├────────────────────────────────────────────────────╯ │ ◇ Optional apps ────────────────────────╮ │ │ │ Add nodes for extra features: │ │ - macOS app (system + notifications) │ │ - iOS app (camera/canvas) │ │ - Android app (camera/canvas) │ │ │ ├────────────────────────────────────────╯ │ ◇ Control UI ───────────────────────────────────────────────────────────────────────────────╮ │ │ │ Web UI: http://127.0.0.1:18789/ │ │ Web UI (with token): │ │ http://127.0.0.1:18789/#token=xxxxxxxx │ │ Gateway WS: ws://127.0.0.1:18789 │ │ Gateway: not detected (gateway closed (1006 abnormal closure (no close frame)): no close │ │ reason) │ │ Docs: https://docs.openclaw.ai/web/control-ui │ │ │ ├────────────────────────────────────────────────────────────────────────────────────────────╯ │ ◇ Workspace backup ────────────────────────────────────────╮ │ │ │ Back up your agent workspace. │ │ Docs: https://docs.openclaw.ai/concepts/agent-workspace │ │ │ ├───────────────────────────────────────────────────────────╯ │ ◇ Security ──────────────────────────────────────────────────────╮ │ │ │ Running agents on your computer is risky — harden your setup: │ │ https://docs.openclaw.ai/security │ │ │ ├─────────────────────────────────────────────────────────────────╯ │ ◇ Shell completion ───────────────────────────────────────────────────────╮ │ │ │ Shell completion installed. Restart your shell or run: source ~/.zshrc │ │ │ ├──────────────────────────────────────────────────────────────────────────╯ │ ◇ Dashboard ready ────────────────────────────────────────────────────────────────╮ │ │ │ Dashboard link (with token): │ │ http://127.0.0.1:18789/#token=xxxxxxx │ │ Copy/paste this URL in a browser on this machine to control OpenClaw. │ │ No GUI detected. Open from your computer: │ │ ssh -N -L 18789:127.0.0.1:18789 user@<host> │ │ Then open: │ │ http://localhost:18789/ │ │ http://localhost:18789/#token=xxxxxxx │ │ Docs: │ │ https://docs.openclaw.ai/gateway/remote │ │ https://docs.openclaw.ai/web/control-ui │ │ │ ├──────────────────────────────────────────────────────────────────────────────────╯ │ ◇ Web search (optional) ─────────────────────────────────────────────────────────────────╮ │ │ │ If you want your agent to be able to search the web, you’ll need an API key. │ │ │ │ OpenClaw uses Brave Search for the `web_search` tool. Without a Brave Search API key, │ │ web search won’t work. │ │ │ │ Set it up interactively: │ │ - Run: openclaw configure --section web │ │ - Enable web_search and paste your Brave Search API key │ │ │ │ Alternative: set BRAVE_API_KEY in the Gateway environment (no config changes). │ │ Docs: https://docs.openclaw.ai/tools/web │ │ │ ├─────────────────────────────────────────────────────────────────────────────────────────╯ │ ◇ What now ─────────────────────────────────────────────────────────────╮ │ │ │ What now: https://openclaw.ai/showcase ("What People Are Building"). │ │ │ ├────────────────────────────────────────────────────────────────────────╯ │ └ Onboarding complete. Use the dashboard link above to control OpenClaw.

2.7 启动openclaw容器(container)

docker start openclaw

2.8 openclaw容器内启动gateway

docker exec -it openclaw openclaw gateway run

2.9 openclaw容器内使用tui对话

2.9.1 docker应用内对话

在docker桌面版——Containers——点击openclaw这个container——Exec——运行——对话

openclaw tui

2.9.2 新开终端对话

docker exec -it openclaw openclaw tui

2.10 openclaw与飞书配对

2.10.1 回到飞书与机器人聊天,会提示需要配对

2.10.2 在docker的Container终端内运行

openclaw pairing approve feishu CZQCNKEG

2.10.3 回到飞书继续聊天——大功告成!

三、总结

本教程完整覆盖了MacOS系统下,基于Docker部署OpenClaw并完成飞书机器人集成的全流程操作,核心逻辑是依托Docker实现标准化环境部署,规避系统兼容问题,再通过大模型API配置赋予工具AI核心能力,最后对接飞书开放平台实现办公场景落地,整体流程可分为环境搭建、镜像部署、核心配置、平台对接、功能调试五大核心环节。

从实操关键点来看,Docker环境正常启动、大模型API信息准确、飞书长链接稳定运行、权限配置完整、两端成功配对是整个部署流程的核心要点,任意一个环节出错都会导致功能异常,新手操作时需重点关注长链接启动后再保存飞书配置、权限批量导入完整、容器全程保持运行这几个细节,避免踩坑。

完成全部部署后,OpenClaw飞书AI机器人即可正常投入使用,实现飞书端的AI对话、信息查询、任务处理等功能,且基于Docker的部署方式具备易维护、易迁移、易重启的优势,后续可根据需求自定义添加Skills技能、更换大模型API或对接其他协同平台,拓展更多实用功能。整体部署流程门槛较低,无需深厚的运维和开发基础,按照步骤逐步操作即可完成,能够快速帮助个人和团队实现AI办公能力的轻量化落地,提升日常办公协作效率,后续若出现容器异常、接口调用失败等问题,可优先检查Docker运行状态、API密钥有效性、飞书长链接连通性和权限配置情况,快速排查解决。

Read more

零基础学AI大模型之Milvus实战:Attu可视化安装+Python整合全案例

零基础学AI大模型之Milvus实战:Attu可视化安装+Python整合全案例

大家好,我是工藤学编程 🦉一个正在努力学习的小博主,期待你的关注实战代码系列最新文章😉C++实现图书管理系统(Qt C++ GUI界面版)SpringBoot实战系列🐷【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案分库分表分库分表之实战-sharding-JDBC分库分表执行流程原理剖析消息队列深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK)AI大模型零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用 前情摘要 1、零基础学AI大模型之读懂AI大模型 2、零基础学AI大模型之从0到1调用大模型API 3、零基础学AI大模型之SpringAI 4、零基础学AI大模型之AI大模型常见概念 5、零基础学AI大模型之大模型私有化部署全指南 6、零基础学AI大模型之AI大模型可视化界面 7、零基础学AI大模型之LangChain 8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路 9、零基础学AI大模型之Prompt提示词工程 10、零基础

By Ne0inhk

绿色版Python(Portable Python)使用指南(Windows系统)

绿色版Python(Portable Python)使用指南(Windows系统) 2026年3月6日 一、下载绿色版Python 绿色版Python(Portable Python)即Windows嵌入式版本(Embeddable Package),是由Python官方提供的免安装、可便携使用的压缩包形式发行版。该版本无需管理员权限,解压即可运行,特别适用于U盘携带、教学演示或受限环境部署。 官方下载来源 推荐从Python官方网站获取原始嵌入包,确保安全与完整性: * 主站地址:https://www.python.org/downloads/windows/ 1,2 * FTP直链模板: CODE 复制 https://www.python.org/ftp/python/{version}/python-{version}-embed-arch.zip 📌 操作提示:访问官网后,在“Looking

By Ne0inhk
Python pytest 框架通关指南:自动化测试不再难

Python pytest 框架通关指南:自动化测试不再难

文章目录 * 一、pytest介绍 * 1.1 pytest的优点 * 1.2 主流Python接口自动化框架对比 * 二、安装 * 三、用例运行规则 * 四、pytest命令参数 * 4.1 常见参数 * 4.2 命令使用示例 * 五、pytest配置文件 * 5.1 常见配置选项 * 5.2 配置示例 * 六、前后置操作 * 6.1 setup_method 和 teardown_method * 6.2.setup_class 和 teardown_class * 七、断言 * 7.1 基本数据类型断言:

By Ne0inhk