【测试开发】python多线程接口测试+SQL并发情况下使用队列(Queue),实现松耦合,修改一个函数,不会有串联关系达到业务测试目的实战记录。

文章讲述了在10秒抢购场景下,如何通过Python的多线程和Queue模块来提高效率。由于单次查询SQL和调用接口耗时较长,作者采用了Queue进行解耦和提高并发处理能力,确保5个账号能同时进行购买操作。文章详细描述了使用pymysql进行数据库查询,requests调用API,以及Queue进行线程间通信的过程,并强调了使用Queue代替列表以保证线程安全的重要性。
摘要由CSDN通过智能技术生成

之前也提到过,现在有个需求,10秒抢购场景下需要用5个账号去购买,但由于调一次接口 查个SQL要3秒,5个用户要15秒,所以采用多线程,现在情况是调完接口要查SQL把结果拿出来对比产品给的需求的值,所以使用队列(Queue)

作用:

  • 解耦
    使程序直接实现松耦合,修改一个函数,不会有串联关系。
    提高处理效率:FIFO = 现进先出,LIFO = 后入先出。

  • 队列
    队列可以并发的派多个线程,对排列的线程处理,并切每个需要处理线程只需要将请求的数据放入队列容器的内存中,线程不需要等待,当排列完毕处理完数据后,线程在准时来取数据即可。请求数据的线程只与这个队列容器存在关系,处理数据的线程down掉不会影响到请求数据的线程,队列会派给其他线程处理这分数据,它实现了解耦,提高效率。队列内会有一个有顺序的容器,列表与这个容器是有区别的,列表中数据虽然是排列的,但数据被取走后还会保留,而队列中这个容器的数据被取后将不会保留。当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。

多线程尽量使用Queue而不是使用列表(list),因为列表的pop()push()效果看起来和和Queue的队列、栈一样,但list不是线程安全的

因为涉及博主真实公司内部测试情况,所以有部分会打马赛克,请见谅

第一步,用pymysql封装为select_mysql,用requests封装为run_api,之前提到过这里就不多做阐述直接第二步

第二步: q_list = queue.Queue()

第三步:封装好 5个线程对应的函数名,里面会调一次购买接口,会查一次SQL并把结果设为变量select_mysql_result,num是产品要求的结果要 X 2倍 然后对比需求的数值

python 的 Queue 模块提供了一种适用于多线程编程的 FIFO 实现。它可用于在生产者和消费者之间线程安全地传递消息或其它数据,因此多个线程可以共用同一个 Queue 实例。

Queue 类实现了一个基本的先进先出(FIFO)容器,使用 put() 将元素添加到序列尾端,get() 从队列尾部移除元素。

第三步:使用队列

 多线程操作之前已提到过本篇就不多做阐述,把5个结果写入run_data

第四步 直接按照产品的逻辑需求写 测试 逻辑:

第五步执行看测试结果:

最后一步就把测试结果数据放在测试平台里 或者 写入测试数据库里 就完事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值