支付业务服务端测试|学习笔记

简介: 快速学习支付业务服务端测试

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)支付业务服务端测试】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12440


支付业务服务端测试


Pay-service测试

对 Pay-service 测试,测试之前由于 shop-api 添加了接口的方法,需要将工程安装,如果对 shop-common 进行修改,shop-common 同样需要安装

安装完成后需要编写一个测试方法

image.png

Name为com.itheima.test.PayServiceTest

@Runwith(SpringRunner.class)

@springBootTest(classes = PayserviceApplication.class)

public class PayServiceTest {

//注入PayService

@Autowired

private IPayservice payService;

//测试createPayment()方法测试时用接口调用,传递treadePay 对象,对象是请求服务端时的分装参数

@Test

public void createPayment(){

TradePay treadePay = new TradePay();

tradePay.setOrderId()请求是支付处理,对支付订单做处理

打开订单表,使用已确认的订单测试

image.png

之前生成的订单数据

image.png

使用已确认的订单,状态值为1的数据测试

添加long orderId = 351526299216515072L;

@Test

public void createPayment(){

long orderId = 351526299216515072L;

TradePay tradePay = new TradePay();

tradePay.setorderIdo(orderId);

payservice.createPayment(tradePay);

Ispaid 不能设置,通过服务端处理,需要指定当前金额

image.png

支付金额880元,订单总金额1000元,减去优惠券20元,余额100元,最终留下880元,需要支付880元,进行Payservice调用

@Test

public void createPayment(){

long orderId = 351526299216515072L;

TradePay tradePay = new TradePay();

tradePay.setorderIdo(orderId);

tradePay.setPayAmount(new BigDecimal(val:880))

payservice.createPayment(tradePay);

执行,微服务不需要启动,因为测试方法运行时会加载启动入口类,直接运行即可

查看支付订单能否生成

image.png

查看测试台执行结果,测试通过,生成支付订单

测试支付回调

对 callbackPayment 进行测试

调用此方法需要传递当前支付订单 ID 参数

image.png

将 ID 号传递过来,将订单 ID 传递过来,将 PayId 与关联的订单 ID 设置

@Test

public void callbackPayment(){

long  payId =“352516176372441088L

long orderId = 351526299216515072L;

TradePay tradePay = new TradePay();

tradePay.setPayId(payId)

tradePay.setorderIdo(orderId);

tradePay.setIsPaid(ShopCode.SHOP_ORDER_PAY_STATUS_IS_PAY.getcode());

payservice.callbackeayment(tradePay);

}

回调方法调用,被第三方支付平台调用,在用户支付完成后被调用,传递支付状态,是一个支付成功状态,SHOP_ORDER_PAY_STATUS_IS_PAY.getcode()

测试首先调用 service.impl,不需要重启,只要进行回调发送消息,消息最终被 order-service 微服务处理,order-service 启动,相关联的 coupon-service/goods-service/user-service 都需要启动,coupon-service/goods-service/user-service 三个依次进行微服务启动

观察控制台,都已经成功启动,

启动完成后,针对订单进行支付

支付完成后,第三方支付平台进行回调

模拟第三方支付平台回调

删除断点,执行

执行成功,未消费消息,tradePay 状态未改变

image.png

加一个断点

image.png

是否执行

is_paid 还原成0,重新测试

sendMessage 调用

image.png

数据都存在,发送,发送完成后结果未返回

sendResult 执行未收到消息,表明消息未发送成功

发送消息的方法在线程池中调用,线程池中调用相当于创建一个子线程,通过异步的方式发送消息,子线程相当于主线程的守护线程,测试方法在主线程中运行,测试方法执行完成后,主线程停止子线程也停止,由于消息发送是异步的,主线程停止,消息还未发送线程停止,消息无法发送

需要测试方法不停止,让子线程有足够的时间发送消息

将 is_paid 改为0,重新设置

image.png

image.png

pay_status 状态未变

重新执行

加入两个断点

image.png

发送,发送成功,放行

测试方法未停止,线程池中有足够的时间发送消息

image.png

消息发送后,消息成功接收

接收到支付成功消息,更改订单支付状态为已支付

刷新,订单状态变为2

image.png

Pay-service 测试实现

相关文章
|
Java
基于Java对STOMP服务端进行测试
在10000用户的并发下,客户端连接用时 5.5秒,500万条数据发送用时 55秒左右
433 0
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
179 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
27 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
62 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
支付系统---微信支付14----创建案例项目---介绍,第二步引入Swagger,接口文档和测试页面生成工具,定义统一结果的目的是让结果变得更加规范,以上就是谷粒项目的几个过程
|
4月前
|
API 开发工具
支付系统23-------使用沙箱账号进行支付测试,统一收单并支付页面接口的调用
支付系统23-------使用沙箱账号进行支付测试,统一收单并支付页面接口的调用
|
6月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
|
6月前
|
网络协议 Java 应用服务中间件
如何使用支付宝的沙箱环境在本地配置模拟支付并发布至公网测试
如何使用支付宝的沙箱环境在本地配置模拟支付并发布至公网测试
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
77 0
|
JavaScript Java 数据安全/隐私保护
java对接支付宝在线支付 沙箱环境测试
首先去https://open.alipay.com/platform/home.htm注册 点击进入我的开放平台