写一段java自动化接口案例

not image

以下是一个使用 **Java + TestNG + Apache HttpClient** 编写的自动化接口测试案例,包含GET/POST请求、断言和参数化测试: --- ### 1. Maven依赖(pom.xml) ```xml org.apache.httpcomponents httpclient 4.5.13 com.alibaba fastjson 1.2.83 org.testng testng 7.7.0 test ``` --- ### 2. Java自动化测试代码 ```java import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.testng.Assert; import org.testng.annotations.*; import java.io.IOException; public class ApiTestExample { private CloseableHttpClient httpClient; // 测试前初始化HttpClient @BeforeTest public void setUp() { httpClient = HttpClients.createDefault(); } // 测试GET请求 @Test public void testGetRequest() throws IOException { String url = "https://jsonplaceholder.typicode.com/posts/1"; HttpGet request = new HttpGet(url); HttpResponse response = httpClient.execute(request); int statusCode = response.getStatusLine().getStatusCode(); String responseBody = EntityUtils.toString(response.getEntity()); // 断言状态码和响应内容 Assert.assertEquals(statusCode, 200); Assert.assertTrue(responseBody.contains("\"id\": 1")); } // 测试POST请求(参数化测试) @Test(dataProvider = "postData") public void testPostRequest(String inputJson, String expectedTitle) throws IOException { String url = "https://jsonplaceholder.typicode.com/posts"; HttpPost request = new HttpPost(url); // 设置请求头和JSON请求体 request.setHeader("Content-Type", "application/json"); request.setEntity(new StringEntity(inputJson)); HttpResponse response = httpClient.execute(request); String responseBody = EntityUtils.toString(response.getEntity()); // 断言响应内容 Assert.assertTrue(responseBody.contains("\"title\":\"" + expectedTitle + "\"")); } // 参数化数据提供者 @DataProvider(name = "postData") public Object[][] providePostData() { return new Object[][]{ // 输入JSON,期望返回的title字段 {"{\"title\":\"Foo\",\"body\":\"Bar\",\"userId\":1}", "Foo"}, {"{\"title\":\"Hello\",\"body\":\"World\",\"userId\":2}", "Hello"} }; } // 测试后关闭HttpClient @AfterTest public void tearDown() throws IOException { httpClient.close(); } } ``` --- ### 3. 代码说明 1. **依赖库**: - `HttpClient`:发送HTTP请求。 - `TestNG`:管理测试用例和断言。 - `FastJSON`(可选):用于复杂JSON响应的解析(本例未使用,仅展示依赖)。 2. **关键功能**: - **GET请求**:验证状态码和响应内容。 - **POST请求**:发送JSON数据并验证返回结果。 - **参数化测试**:通过`@DataProvider`提供多组测试数据,提升用例覆盖率。 3. **运行方式**: - 使用IDE(如IntelliJ IDEA)右键运行测试类。 - 或通过Maven命令行执行:`mvn test`。 --- ### 4. 扩展方向 - **增加日志记录**:集成Log4j或Slf4j记录请求/响应详情。 - **封装通用方法**:将HTTP请求、断言逻辑封装为工具类。 - **环境配置管理**:通过`@Parameters`或配置文件(如application.yml)管理测试环境URL。 - **自动化报告**:集成Allure或ExtentReports生成测试报告。 如果需要更复杂的场景(如鉴权、文件上传、性能测试),可以进一步扩展代码! 🚀

评论区:

评论:

请输入内容: