Skip to main content

testing-integration

Executes integration tests to validate combined components and their interactions in a system, ensuring workflows operate seamlessly.

跳到安装

来源信息

仓库
paulpas/agent-skill-router
最近来源活动
2026年6月9日 18:00
检测到的 SKILL.md 语言
英语
星标
4
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
testing-integration
description
Executes integration tests to validate combined components and their interactions in a system, ensuring workflows operate seamlessly.
license
MIT
compatibility
opencode
metadata
{"version":"1.0.0","domain":"coding","triggers":"integration testing, integration tests, system testing, workflows","role":"implementation","scope":"implementation","output-format":"code","related-skills":"testing-unit, testing-contract, testing-end-to-end","archetypes":"tactical, diagnostic","anti_triggers":"unit testing, manual testing, load testing","response_profile":{"verbosity":"medium","directive_strength":"high","abstraction_level":"tactical"}}
# Integration Testing Implement integration testing to ensure that different modules or services within an application work together as expected. Focus on testing the flow of data and control between modules. ## When to Use - When multiple components or services interact. - To validate interactions between third-party services and your application. - Before deploying to production environments as a safeguard for feature integrations. ## Core Workflow 1. **Select Integration Testing Framework** Use a testing framework suitable for integration tests (e.g., `Postman` for APIs, `Jest` for Node.js). ```bash # For Node.js npm install jest --save-dev ``` 2. **Create Test Suites** Develop suites that define the interactions to be tested. ```javascript const request = require('supertest'); const app = require('../app'); describe('API Integration Tests', () => { it('should return 200 on valid request', async () => { const response = await request(app).get('/api/data'); expect(response.statusCode).toBe(200); }); }); ``` 3. **Run Tests and Analyze Results** Execute integration tests and review results for accuracy and performance. ```bash npm test ``` 4. **Fix Integration Issues** If any tests fail, modify your code or configurations to resolve issues, then re-test. ## Implementation Patterns ### Pattern 1: Using Jest for API Testing ```javascript const request = require('supertest'); const app = require('../app'); describe('GET /api/users', () => { it('responds with json', async () => { const res = await request(app) .get('/api/users') .expect('Content-Type', /json/) .expect(200); expect(res.body).toHaveProperty('users'); }); }); ``` --- ## TL;DR for Code Generation - **Test real dependencies, not mocks** — Integration tests should exercise actual databases, APIs, and message queues. Mock only external third-party services you don't control. - **Use transactions for database isolation** — Wrap each integration test in a database transaction and roll back after the test to keep state clean between runs. - **Prefer HTTP-level API testing** — Send real HTTP requests (using `httpx` or `supertest`) rather than calling controller functions directly — this validates routing, middleware, and serialization. - **Cover error paths too** — Test what happens when a service returns 500, a database times out, or a message queue is unreachable. - **Keep integration tests separate from unit tests** — Use distinct directories (`tests/integration/` vs `tests/unit/`) and separate CI jobs to run them at different cadences. --- ## Implementation Patterns ### Pattern 2: Using Pytest with HTTPX for API Integration Tests Python's `httpx` library pairs naturally with pytest for HTTP-level integration testing: ```python import pytest import httpx BASE_URL = "http://localhost:8000" @pytest.fixture async def client(): """Provide an async HTTP client for integration tests.""" async with httpx.AsyncClient(base_url=BASE_URL) as client: yield client @pytest.mark.asyncio async def test_get_users_returns_200(client: httpx.AsyncClient): """Verify GET /api/users returns a list of users.""" response = await client.get("/api/users") assert response.status_code == 200 data = response.json() assert "users" in data assert isinstance(data["users"], list) @pytest.mark.asyncio async def test_create_user_persists_data(client: httpx.AsyncClient): """Verify POST /api/users creates and returns a new user.""" payload = {"name": "Alice", "email": "alice@example.com"} response = await client.post("/api/users", json=payload) assert response.status_code == 201 created = response.json() assert created["name"] == "Alice" assert created["id"] is not None @pytest.mark.asyncio async def test_get_nonexistent_user_returns_404(client: httpx.AsyncClient): """Verify 404 for a non-existent user ID.""" response = await client.get("/api/users/99999") assert response.status_code == 404 ``` ## Constraints ### MUST DO - Ensure that all modules are tested in isolation before integration. - Validate that all expected data formats and states are handled appropriately. ### MUST NOT DO - Combine too many tests into one suite to avoid confusion. - Neglect to test error scenarios along with successful workflows. --- ## Live References > Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content. - [pytest Documentation — Integration Testing](https://docs.pytest.org/en/stable/usage.html#integration-testing) - [pytest Fixtures for Test Setup](https://docs.pytest.org/en/stable/explanation/fixtures.html) - [Integration Testing Best Practices (Guru99)](https://www.guru99.com/integration-testing.html) - [Pytest HTTPX for API Integration Tests](https://docs.pytest.org/en/stable/how-to/asyncio.html) - [Testing Microservices — End-to-End vs Integration](https://www.testim.io/blog/the-difference-between-unit-integration-and-e2e-tests/)
在 GitHub 查看