Apifox环境变量JavaScript实战5分钟搞定Google Gemini API接口自动化测试当团队开发集成AI功能的应用时API接口测试的效率直接影响开发进度。传统手动测试不仅耗时还难以保证每次测试环境的一致性。本文将展示如何利用Apifox的环境变量管理和JavaScript代码生成功能快速构建可重复执行的Gemini API自动化测试方案。1. 环境配置与密钥管理在开始自动化测试前安全地管理API密钥是首要任务。Gemini API要求开发者通过Google AI Studio获取专属密钥这个密钥需要被妥善保管并避免直接硬编码在脚本中。Apifox的环境管理功能为此提供了完美解决方案在Apifox中创建新环境如Gemini_Production添加环境变量GEMINI_API_KEY并粘贴从Google获取的密钥启用仅本地存储选项确保密钥不会同步到云端// 通过process.env获取环境变量的示例 const apiKey process.env.GEMINI_API_KEY;注意永远不要将API密钥提交到版本控制系统。Apifox的环境变量本地存储功能可以有效防止密钥泄露。2. 请求构建与参数动态化Gemini API支持多种参数配置通过Apifox我们可以将这些参数转化为环境变量实现测试用例的灵活切换。典型参数包括参数名类型示例值说明modelstringgemini-pro指定使用的模型版本temperaturenumber0.7控制输出的随机性程度maxTokensnumber1000限制响应长度在Apifox中我们可以将这些参数保存为环境变量组测试时通过切换环境来改变测试场景// 动态构建请求参数的函数 function buildRequestParams(env) { return { model: env.MODEL_NAME || gemini-pro, temperature: parseFloat(env.TEMPERATURE) || 0.7, maxTokens: parseInt(env.MAX_TOKENS) || 800 }; }3. JavaScript测试脚本实战Apifox的代码生成功能可以直接输出可运行的测试脚本。我们选择JavaScript(Axios)作为示例语言因为它既适合前端开发者也能在Node.js环境中运行。完整测试脚本包含以下关键组件请求初始化配置Axios实例和基础URL错误处理捕获网络错误和API返回的错误响应验证检查返回数据的结构和内容const axios require(axios); const fs require(fs); // 初始化Axios实例 const apiClient axios.create({ baseURL: https://generativelanguage.googleapis.com/v1beta, timeout: 10000, headers: { Content-Type: application/json } }); // 执行测试用例 async function testGeminiAPI() { try { const response await apiClient.post(/models/${process.env.MODEL_NAME}:generateContent?key${process.env.GEMINI_API_KEY}, { contents: [{ parts: [{ text: 请用中文解释量子计算的基本原理 }] }] }); // 验证响应结构 if (!response.data.candidates || !response.data.candidates[0].content) { throw new Error(Invalid response structure); } // 保存测试结果 fs.writeFileSync(test-result.json, JSON.stringify(response.data, null, 2)); console.log(测试成功结果已保存); } catch (error) { console.error(测试失败:, error.response?.data || error.message); process.exit(1); } } testGeminiAPI();4. 高级测试场景实现基础测试通过后我们可以扩展更多实用场景4.1 批量测试与数据驱动创建测试数据文件test-cases.json[ { description: 测试简短问题响应, input: 你好你是谁, expectedKeywords: [AI, 助手, Gemini] }, { description: 测试代码解释能力, input: 解释以下Python代码的作用def factorial(n): return 1 if n 0 else n * factorial(n-1), expectedKeywords: [递归, 阶乘, 函数] } ]对应的测试脚本扩展const testCases require(./test-cases.json); async function runBatchTests() { let passed 0; for (const testCase of testCases) { try { const response await apiClient.post(/models/${process.env.MODEL_NAME}:generateContent?key${process.env.GEMINI_API_KEY}, { contents: [{ parts: [{ text: testCase.input }] }] }); const responseText response.data.candidates[0].content.parts[0].text; const isPassed testCase.expectedKeywords.every(keyword responseText.includes(keyword) ); if (isPassed) passed; console.log(${testCase.description}: ${isPassed ? ✓ : ✗}); } catch (error) { console.log(${testCase.description}: 失败 (${error.message})); } } console.log(\n测试完成: ${passed}/${testCases.length} 通过); }4.2 性能监控与基准测试添加性能指标收集功能async function benchmarkAPI() { const iterations 5; const latencies []; for (let i 0; i iterations; i) { const start Date.now(); await apiClient.post(/* 请求参数 */); const duration Date.now() - start; latencies.push(duration); console.log(请求 ${i1}: ${duration}ms); } const stats { average: latencies.reduce((a, b) a b, 0) / latencies.length, min: Math.min(...latencies), max: Math.max(...latencies) }; console.table(stats); }5. 持续集成与自动化将API测试集成到CI/CD流程中在Apifox中导出测试集合为JSON创建api-test.js脚本运行这些测试配置GitHub Actions或Jenkins定期执行示例GitHub Actions配置name: API Tests on: [push, schedule] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkoutv2 - name: Setup Node uses: actions/setup-nodev1 with: node-version: 16 - run: npm install axios - run: node api-test.js env: GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} MODEL_NAME: gemini-pro提示在CI环境中使用Apifox的Mock服务可以避免消耗实际API配额同时保持测试环境的稳定性。