网易首页 > 网易号 > 正文 申请入驻

利用ChatGPT: 帮助我们进行API 自动化测试

0
分享至

关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。


ChatGPT 可以帮助您在REST Assured中生成API 测试!
ChatGPT是一种可以理解和回复人类输入的人工智能,就像一个可以与之对话的高智能机器人。只需免费开设一个帐户,然后像与朋友一样开始聊天。
让我们首先请求 ChatGPT 生成一个 API 规范,以便我们可以展示它稍后如何创建测试。
我对 ChatGPT:“为一家名为 FoxShipping 的新航运公司的跟踪 API 创建一个 OpenAPI 规范。”
它为我们的新 FoxShipping 跟踪 API生成示例OpenAPI规范:

openapi: 3.0.
info:
title: FoxShipping Tracking API
version: 1.0.0
description: This API allows customers to track their shipments with FoxShipping.
contact:
name: FoxShipping Support
email: support@foxshipping.com
url: https://www.foxshipping.com
servers:
- url: https://api.foxshipping.com/tracking
paths:
/:
post:
summary: Track a shipment with FoxShipping
operationId: trackShipment
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
trackingNumber:
type: string
example: 1234567890
apiKey:
type: string
example: YOUR_API_KEY
responses:
200:
description: Successful tracking request
content:
application/json:
schema:
type: object
properties:
trackingNumber:
type: string
example: 1234567890
status:
type: string
example: "Delivered"
estimatedDelivery:
type: string
format: date-time
example: "2022-01-01T12:00:00Z"
401:
description: Unauthorized request
404:
description: Tracking number not found


现在,我们可以要求它为它创建 API 测试。
我对 ChatGPT:“使用 RestAssured 为 FoxShipping Tracking API 编写 API 测试。”
import io.restassured.RestAssured
import io.restassured.response.Response;
import org.junit.BeforeClass;
import org.junit.Test;
public class FoxShippingTrackingAPITest {
private static final String API_KEY = "YOUR_API_KEY";
@BeforeClass
public static void setup() {
RestAssured.baseURI = "https://api.foxshipping.com/tracking";
}
@Test
public void testTrackShipment() {
String trackingNumber = "1234567890";
String requestBody = "{\"trackingNumber\":\"" + trackingNumber + "\",\"apiKey\":\"" + API_KEY + "\"}";
Response response = RestAssured.given().
contentType("application/json").
body(requestBody).
when().
post();
int statusCode = response.getStatusCode();
assertEquals(200, statusCode);
String responseBody = response.getBody().asString();
assertTrue(responseBody.contains(trackingNumber));
assertTrue(responseBody.contains("status"));
assertTrue(responseBody.contains("estimatedDelivery"));
}
}
看起来不错,但我们也需要涵盖错误情况。我们跟进。
我对 ChatGPT 说:“还请为 错误场景添加测试。”
import io.restassured.RestAssured
import io.restassured.response.Response;
import org.junit.BeforeClass;
import org.junit.Test;
public class FoxShippingTrackingAPITest {
private static final String API_KEY = "YOUR_API_KEY";
@BeforeClass
public static void setup() {
RestAssured.baseURI = "https://api.foxshipping.com/tracking";
}
@Test
public void testTrackShipment() {
String trackingNumber = "1234567890";
String requestBody = "{\"trackingNumber\":\"" + trackingNumber + "\",\"apiKey\":\"" + API_KEY + "\"}";
Response response = RestAssured.given().
contentType("application/json").
body(requestBody).
when().
post();
int statusCode = response.getStatusCode();
assertEquals(200, statusCode);
String responseBody = response.getBody().asString();
assertTrue(responseBody.contains(trackingNumber));
assertTrue(responseBody.contains("status"));
assertTrue(responseBody.contains("estimatedDelivery"));
}
@Test
public void testUnauthorizedRequest() {
String trackingNumber = "1234567890";
String requestBody = "{\"trackingNumber\":\"" + trackingNumber + "\",\"apiKey\":\"INVALID_API_KEY\"}";
Response response = RestAssured.given().
contentType("application/json").
body(requestBody).
when().
post();
int statusCode = response.getStatusCode();
assertEquals(401, statusCode);
String responseBody = response.getBody().asString();
assertTrue(responseBody.contains("Unauthorized request"));
}
@Test
public void testTrackingNumberNotFound() {
String trackingNumber = "INVALID_TRACKING_NUMBER";
String requestBody = "{\"trackingNumber\":\"" + trackingNumber + "\",\"apiKey\":\"" + API_KEY + "\"}";
Response response = RestAssured.given().
contentType("application/json").
body(requestBody).
when().
post();
int statusCode = response.getStatusCode();
assertEquals(404, statusCode);
String responseBody = response.getBody().asString();
assertTrue(responseBody.contains("Tracking number not found"));
}
}
这样,我们现在有 3 个测试用例,涵盖了 FoxShipping 跟踪服务 OpenAPI 规范中概述的所有 3 个场景。这些为您奠定了坚实的基础,您可以将其用作起点并通过添加您自己的自定义项和其他测试用例来构建。
您还想了解更多关于在测试中使用 ChatGPT 的其他主题吗?请在下面的评论中留下您的建议,我会写下来。
附注:我使用来自 OpenAPI 的 DALL-E 2为这篇文章生成了您在标题中看到的图像,方法是要求它“与人类开发人员进行 AI 实体对编程”。这个很不错!
请注意,出于安全原因,不建议将您公司的私有专有代码粘贴到 ChatGPT 中,除非您有充分的理由并获得这样做的许可! 本文的目的是展示可能会破坏测试环境的新 AI 技术的强大功能。如果您正在为您的团队寻找特定的测试生成方法,请随时直接与我联系。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
1990年林青霞与亲姐河南相认,对方一贫如洗,她有没有帮帮姐姐?

1990年林青霞与亲姐河南相认,对方一贫如洗,她有没有帮帮姐姐?

飘飘然的娱乐汇
2026-05-21 21:30:06
“同一批杨梅,合格飞欧洲,泡药发全国”,这拷问让人更扎心!

“同一批杨梅,合格飞欧洲,泡药发全国”,这拷问让人更扎心!

迷世书童
2026-05-21 17:53:04
普京访华结束,特朗普用一句话评价,日本听完:马上派人来中国

普京访华结束,特朗普用一句话评价,日本听完:马上派人来中国

李健政观察
2026-05-21 12:12:04
上上签!U17国足世界杯小组出线形势明朗,力争小组第二!

上上签!U17国足世界杯小组出线形势明朗,力争小组第二!

海浪星体育
2026-05-22 09:10:03
58岁母亲阳台摆供桌烧香后外出购物,引发火灾致两名子女死亡!辩护人建议对其免予刑事处罚,法院:一审判刑3年,缓刑3年6个月

58岁母亲阳台摆供桌烧香后外出购物,引发火灾致两名子女死亡!辩护人建议对其免予刑事处罚,法院:一审判刑3年,缓刑3年6个月

都市快报橙柿互动
2026-05-22 09:12:13
洪水橙色预警 广东漠阳江将出现超警洪水

洪水橙色预警 广东漠阳江将出现超警洪水

极目新闻
2026-05-22 08:33:52
4-1!C罗梅开二度喜极而泣,打破5年冠军荒,胜利加冕联赛冠军

4-1!C罗梅开二度喜极而泣,打破5年冠军荒,胜利加冕联赛冠军

我的护球最独特
2026-05-22 03:56:42
女子向华为售后投诉,并告知已在网上发视频维权,结果维权账号火速被禁言

女子向华为售后投诉,并告知已在网上发视频维权,结果维权账号火速被禁言

西虹市闲话
2026-05-21 16:14:45
又变脸?特朗普做出涉台最新表态,中方直接叫停美副防长访华

又变脸?特朗普做出涉台最新表态,中方直接叫停美副防长访华

纵拥千千晚星
2026-05-22 04:09:01
特朗普儿媳再忆中国行:太震撼了!中国几千年历史,太多值得看的,美国才250年

特朗普儿媳再忆中国行:太震撼了!中国几千年历史,太多值得看的,美国才250年

第一财经资讯
2026-05-21 20:49:26
“穷人脸就是碳水脸”刷屏!网友破防了!

“穷人脸就是碳水脸”刷屏!网友破防了!

广告案例精选
2026-05-21 23:41:41
图赫尔彻底疯了!英格兰世界杯名单大爆冷,两大世界级王牌被无视

图赫尔彻底疯了!英格兰世界杯名单大爆冷,两大世界级王牌被无视

奶盖熊本熊
2026-05-22 02:10:27
英国一电台突然播报查尔斯国王去世消息,此时他本人正在北爱尔兰喝威士忌

英国一电台突然播报查尔斯国王去世消息,此时他本人正在北爱尔兰喝威士忌

西游日记
2026-05-21 14:13:48
张本智和全家逃离日本,两个集装箱搬空10年家,日乒彻底慌了

张本智和全家逃离日本,两个集装箱搬空10年家,日乒彻底慌了

幽棠的趣式
2026-05-20 16:18:50
孙总连夜驰援广厦!阿立兹伤情更新,4坏消息让深圳翻盘彻底无望

孙总连夜驰援广厦!阿立兹伤情更新,4坏消息让深圳翻盘彻底无望

后仰大风车
2026-05-22 07:05:15
6换1难以拒绝!字母下家基本确定?名宿:他赛季初就在当地看房了

6换1难以拒绝!字母下家基本确定?名宿:他赛季初就在当地看房了

你的篮球频道
2026-05-22 07:37:11
这才是普京着急访华的真正原因!

这才是普京着急访华的真正原因!

李荣茂
2026-05-21 18:56:06
女子在高铁静音车厢连打20分钟电话 乘客:乘务员一直举牌劝阻却被忽视

女子在高铁静音车厢连打20分钟电话 乘客:乘务员一直举牌劝阻却被忽视

封面新闻
2026-05-21 12:12:47
38.99万元!小米跑车级SUV YU7 GT上市 雷军:坚决反对在市政公路上危险驾驶

38.99万元!小米跑车级SUV YU7 GT上市 雷军:坚决反对在市政公路上危险驾驶

每日经济新闻
2026-05-21 21:25:25
以军拦截“全球坚韧船队”画面公布,爱尔兰总统的妹妹遭以军扣留,爱尔兰总统:我很担心她,全球多地抗议以军行径

以军拦截“全球坚韧船队”画面公布,爱尔兰总统的妹妹遭以军扣留,爱尔兰总统:我很担心她,全球多地抗议以军行径

每日经济新闻
2026-05-21 11:17:36
2026-05-22 10:08:49
牛马科技
牛马科技
业务数码玩家.无聊的博主
6016文章数 615关注度
往期回顾 全部

科技要闻

SpaceX“星舰”V3试飞推迟,马斯克回应

头条要闻

35岁中介加班心梗离世留下3个子女 曾多次被罚跑罚抄

头条要闻

35岁中介加班心梗离世留下3个子女 曾多次被罚跑罚抄

体育要闻

常住人口7000的小镇,拥有了一支德甲球队

娱乐要闻

反转!金秀贤与金赛纶未成年时交往不实

财经要闻

又一存储芯片类产品,价格暴涨300%

汽车要闻

配1.5L动力/增加新配色 吉利帝豪向上系列将于5月24日上市

态度原创

教育
家居
数码
本地
手机

教育要闻

有理数多结论问题,一个视频学明白!

家居要闻

风格碰撞 个性与艺术

数码要闻

一季度中国消费级平板销量下滑近20% 苹果线上份额近30%

本地新闻

用云锦的方式,打开江苏南京

手机要闻

华为拿下第一,OPPO第二,iPhone仅排第三!

无障碍浏览 进入关怀版