开源接口自动化平台sosotest的使用心得

sosotest:接口自动化测试的新选择
本文分享了作者使用开源接口自动化平台sosotest的心得体会,包括其断言恢复功能、接口准备、环境变量隔离及亮点特性。sosotest解决了在jmeter中遇到的问题,并提供了更灵活的接口测试解决方案。作者特别强调了断言恢复的恢复操作,以及组合文本在环境数据隔离中的作用,使得测试脚本能在不同环境下运行。
部署运行你感兴趣的模型镜像

开始接触接口测试的时候,使用的jmeter,当时还是一个同事给分享了jmeter的基本操作功能。

后来研究接口自动化,想要利用jmeter来做这个,逐渐用上了数据库连接,前置,后置等略微高级一些的功能。

但jmeter在接口测试的过程中的方便是不言而喻的,但是总给人一种以呆板的感觉。

于是在接口自动化探索的道路上摸摸索索。

混迹testerhome开源版块也有不少的接口自动化开源项目,最有名的应该是httprunner,试了下不是我的菜。

还有其他几个开源平台也试用了下,个人感觉跟我的思想不是很契合。

直到利用pytest +allure 来做的时候,觉得还不错,但是要写代码,对有些同学来说门槛略高,如果想写代码搞接口自动化,强推pytest+allure。为啥我放弃了呢,因为在这个时候我发现了一个更好用的开源接口自动化平台sosotest。

安装,部署我就不说了,官方使用手册很清楚。

sosotest在testerhome上页面,官方群284333313 (我不是托) 我现在是sosotest的小迷妹了。

https://testerhome.com/opensource_projects/sosotest

碰到的一个坑:所有的服务部署在windows本机上貌似有点问题,部署到服务器上去之后就木有问题了 。

主要来说说,这个开源的平台是如何与我思想的契合,其实我也只发现了其冰山的一脚。

1.重要的断言

sosotest中叫断言恢复,为啥叫断言恢复呢?

因为这个断言中不仅仅可以写断言哦,还可以恢复。

啥叫恢复?

比如你的接口是添加某个数据,里面有个标题是‘aaaa’,且这个标题是不能重复的。那你在执行这个接口后,数据库里有了一条‘aaa’的数据,当你下次再执行这个接口的时候,就不能添加成功了。

恢复的妙用就是在这里。

有两种方法:

1.直接执行sql语句,将这条数据删除

2.执行与此添加接口相反的删除接口

以上两种方法都可以直接写到断言恢复中,相当于对此接口产生新数据的清理工作,这点在自动化测试中很有用。

如上图所示:在断言恢复中的几个步骤

1.断言

2.数据库查询(经测试貌似不支持连表查询)

3.通过json提取message_id,这个提取出来的值可以给下一个接口使用哦,后面讲准备的时候讲。这些方法在其平台上都有详细说明

4.执行清理接口

2.重要的准备

准备相当于jmeter里的前置条件,jmeter如果加前置可能会需要好几个步骤,这里也是几个步骤,但是操作十分方便。

准备中有很多事情可以操作。

比如执行接口,查询数据取值,引用组合文本,大可以发挥你的想象。

且在准备中执行的接口,如果该接口有断言恢复中有取出变量,那么在当前的接口可以直接使用这个变量哦,妥妥的好用。

值得一说便是这个组合文本。可以看到创建一个组合文本之后,他可以统一或单独设置不同环境的文本值。

划重点,这个很有用!如下面的两个图所示。

你可以将测试环境,线上环境单独设置文本值,然后在执行接口的时候,选择相应的环境,就可以使用相应环境的变量,这样做到数据,业务分离,同一套脚本只要选择不同的环境就可以分别执行相应环境的数据了。

亮点:

可以在你编写接口的时候直接调试,错误信息,返回啥的也非常详细,这点和jmter是差不多的,多了的内容就是选择环境,完全展示准备和断言恢复中的内容。

支持python模式和数据关键字模式。用起来贼溜。

对于那种一个接口多个用例的情况有以下两种思路:

1.写多个接口(反正可以复制)然后将这些接口添加到业务流中

2.用python实现,官方也有详细说明大致如下(抄官方代码)

写在准备里面,大致试验了下,下面是一个登录的接口。

# python
userlist = [
        {"account":"18668219620","pwd":"111111"},
        {"account":"18668219620","pwd":"1111123"}]
totalcount, passcount, failcount = 0,0,0
expected = '"errorCode":"0"'
for user in userlist:
    execute_current() # 执行当前接口的执行信息,使用变量user
    # 输出执行后的输入和输出信息
    log("processedHeader: %s" % context.processedHeader)
    log("processedUrl: %s" % context.processedUrl)
    log("processedParams: %s" % context.processedParams)
    log("processedBodyContent: %s" % context.processedBodyContent)
    retContent = const("RESP_TEXT")
    log("retContent: %s" % retContent)
    # 对返回结果进行判断。
    if expected in retContent:
        passcount += 1
        log("PASS")
    else:
        failcount += 1
        log("FAIL")

# 开始设置测试结果,如果有失败则失败,否则全部成功。
if failcount > 0:
    set_result("FAIL","测试未通过,失败%d次。" % failcount)
else:
    set_result("PASS","测试通过.")

后续就是将你的接口脚本添加到业务流,再将业务流添加到任务,就可以美美的执行了,执行完了还有美美的报告。

这些就不细说了,使用手册里面都有。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值