Ruby 语言 编写 API 接口测试 CLI 发送请求 / 校验响应 / 生成报告

Ruby阿木 发布于 1 天前 4 次阅读


Ruby API 接口测试 CLI 开发指南

随着互联网技术的飞速发展,API(应用程序编程接口)已成为现代软件开发中不可或缺的一部分。为了确保API的稳定性和可靠性,接口测试变得尤为重要。本文将围绕Ruby语言,介绍如何开发一个简单的API接口测试CLI(命令行界面)工具,该工具能够发送请求、校验响应并生成测试报告。

环境准备

在开始编写代码之前,请确保你的开发环境中已经安装了Ruby。你可以通过以下命令检查Ruby是否已安装:

ruby
ruby -v

如果未安装Ruby,请访问官方网址(https://www.ruby-lang.org/)下载并安装。

安装依赖

为了简化开发过程,我们将使用一些流行的Ruby库,如`net/http`用于发送HTTP请求,`json`用于解析JSON响应,以及`colorize`用于美化输出。以下是如何安装这些依赖的命令:

ruby
gem install net/http json colorize

设计CLI工具

我们的CLI工具将包含以下功能:

1. 发送HTTP请求到指定的API端点。
2. 校验响应的状态码和内容。
3. 生成测试报告。

1. 创建项目结构

创建一个名为`api_tester`的项目目录,并在其中创建以下文件:


api_tester/
|-- lib/
| |-- api_tester.rb
|-- test/
| |-- test_api_tester.rb
|-- bin/
| |-- api_tester
|-- Gemfile
|-- Rakefile

2. 编写API测试器代码

在`lib/api_tester.rb`文件中,编写以下代码:

ruby
require 'net/http'
require 'json'
require 'colorize'

module APITester
def self.send_request(url, method: 'GET', body: nil)
uri = URI(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
request = Net::HTTP::GenericRequest.new(method, uri.request_uri, initheader = {}, body)

response = http.request(request)
JSON.parse(response.body)
rescue StandardError => e
puts "Error: {e.message}".red
nil
end

def self.validate_response(response, expected_status: 200)
response && response['status'] == expected_status
end

def self.generate_report(test_cases)
report = "API Test Report:"
test_cases.each do |test_case|
report += "Test Case: {test_case[:name]}"
report += "Status: {test_case[:status] ? 'Passed'.green : 'Failed'.red}"
report += "Response: {test_case[:response].inspect}

"
end
puts report
end
end

3. 编写测试用例

在`test/test_api_tester.rb`文件中,编写以下测试用例:

ruby
require 'minitest/autorun'
require_relative '../lib/api_tester'

class APITesterTest 200 }
assert_equal(true, APITester.validate_response(response))
end
end

4. 创建可执行文件

在`bin/api_tester`文件中,编写以下代码:

ruby
!/usr/bin/env ruby
require_relative '../lib/api_tester'

if ARGV.empty?
puts "Usage: {$0} [method] [body]"
exit 1
end

url = ARGV[0]
method = ARGV[1] || 'GET'
body = ARGV[2] ? JSON.parse(ARGV[2]) : nil

response = APITester.send_request(url, method: method, body: body)
if response
if APITester.validate_response(response)
puts "Test Passed: {response}"
else
puts "Test Failed: Expected status 200, got {response['status']}".red
end
else
puts "Test Failed: No response received".red
end

确保`bin/api_tester`文件具有可执行权限:

shell
chmod +x bin/api_tester

5. 编写Gemfile

在`Gemfile`中,添加以下内容:

ruby
source 'https://rubygems.org'

gem 'minitest'
gem 'json'
gem 'colorize'

运行以下命令安装Gemfile中的依赖:

shell
bundle install

6. 编写Rakefile

在`Rakefile`中,添加以下内容:

ruby
require 'minitest/autorun'

desc 'Run tests'
task :test do
Rake::Task['test:unit'].invoke
end

task :test:unit do
Rake::TestTask.new do |t|
t.libs << 'test'
t.test_files = FileList['test//_test.rb']
end
end

运行以下命令执行测试:

shell
rake test

总结

通过以上步骤,我们成功创建了一个简单的Ruby API接口测试CLI工具。这个工具可以发送HTTP请求,校验响应,并生成测试报告。你可以根据实际需求扩展这个工具的功能,例如添加更多的测试用例、支持不同的HTTP方法、处理不同类型的响应等。

希望这篇文章能帮助你更好地理解如何使用Ruby开发API接口测试CLI工具。祝你编程愉快!