探索接口自动化(一)--独立接口(Python)

导语

        刚接触接口自动化,或许会一头雾水,不知道从何下手,本次的重点不在于编写多么复杂的代码,在于分析需求、拆分任务的过程,要养成边编写代码,边调试的习惯,作为小白,千万不能一股脑编写很多了再运行,结果报了很多错,排查问题很费劲。当遇到不会的技术点时,可以先做个技术试验,成功以后再与目标版本代码融合。

        本次的最终任务是,完成登录功能的接口测试,其中接口所需用户数据需要从CSV文件中读取,并将测试结果编写在测试报告中,完成的过程采取分版本,逐步实现最终需求,这样后续遇到了复杂的需求,也可以由简入复逐步实现。

一、V1.0版本

        V1.0版本需求,发送请求,不传用户数据,获取响应结果,代码如下:

# 导包
import requests
# 定义响应地址(此处地址仅为示例)
url = "http://localhost:8080/....../login.do"
# 发送请求,并获取响应结果
response = requests.post(url).text
# 打印响应结果,调试语句
print(response)

         运行程序以后,打印的响应结果为:{"status":1,"msg":"用户名不存在"},在没有传入任何用户数据时登录,此结果没问题,这样可以继续下一个版本。

二、V2.0版本

        V2.0版本需求,在上个版本的基础上,传入一组已注册的用户数据,代码如下:

# 定义一组已注册过的用户数据
userinfo={
    "username":"小张",
    "password":"123456"
}

         然后在上个版本的基础上,再将userinfo传入即可,修改如下:

# 发送请求,并获取响应结果
response = requests.post(url, data=userinfo).text

        修改完成以后,要记得运行调试一下,没有问题,再进行下一步。

三、V3.0版本

        V3.0版本,在上个版本的基础上,对响应结果进行校验,得出测试结论。在这里就用if语句,简单的做个结果比对,代码如下:

# 结果比对
result = response.find("登录成功")
if result>0:
    print("登录接口传入已注册用户的参数时,测试通过")
else:
    print("登录接口传入已注册用户的参数时,测试失败")

四、V4.0版本

        鉴于功能测试的经验,还需要测试没有注册的用户登录、密码错误时登录、用户名错误时登录等情况,那需要不停的去修改代码中传入参数,就会比较繁琐,可以先将相关数据存放在一个csv文件中,利用代码去读取文件,这样就不用频繁修改代码,只需要维护数据文件即可,并且可以运行一次代码,就可以执行多种登录情况,大大节约了时间。

        V4.0版本需求,在上个版本的基础上,将传入一组固定用户数据改为读取CSV文件,初学者可以先做个读取CSV文件数据的小试验,代码如下:

# 实验1:读取csv数据
import csv
file = open("userinfo.csv")
table = csv.reader(file)
for ele in table:
    print(ele[0])

        试验成功后,就可以与上个版本的代码做一个整合,在整合前,可以将结果比对的代码先暂时屏蔽,因为每种登录情况的响应结果不同,后续再做处理。

        首先准备一个用户数据的csv文件,如下图:

图1 用户数据CSV文件详情

        整合后部分代码如下:

file = open("userinfo.csv")
table = csv.reader(file)
userinfo = {}
for ele in table:
    userinfo["username"] = ele[0]
    userinfo["password"] = ele[1]
    response = requests.post(url, data=userinfo).text
    print(response)

         这样就实现了可以传入多组数据,后续只需要维护CSV文件即可。

五、V5.0版本

        V5.0版本需求,在上个版本的基础上,把每组测试数据、对应的测试结果写入测试报告中。上个版本中做了读取文件的小试验,现在可以再做个写入数据的小试验,代码如下:

实验2:创建一个测试报告,把相关内容写入
import csv
file = open("testreport.csv", "w")
file.write("zhangsan"+","+"123456")
file.close()

        试验成功后,可与之前的版本代码做一个整合,部分代码如下:

test_data = open("userinfo.csv")
test_report = open("testreport.csv", "w")
table = csv.reader(test_data)
userinfo = {}
for ele in table:
    userinfo["username"] = ele[0]
    userinfo["password"] = ele[1]
    response = requests.post(url, data=userinfo).text
    print(response)
    result = response.find(ele[2])
    if result > 0:
        print("测试通过")
        test_report.write(ele[0] + "," + ele[1] + "," + ele[2] + "," + "测试通过" + "," + "\n")
    else:
        print("测试失败")
        test_report.write(ele[0] + "," + ele[1] + "," + ele[2] + "," + "测试失败" + "," + "\n")
test_data.close()
test_report.close()

        需要注意的是,由于是循环去读取CSV文件中的数据,那么每读取一次,就需要去做一次测试结果的比对,要注意代码的缩进,另外,在代码循环结束后,一定要关闭文件,避免出现内存泄漏。

六、总结

        本次功能较为简单,为独立接口测试,主要是学会去分版本拆解需求,逐步实现最终目标。本次还实现了读取CSV文件,写入数据到CSV文件的功能。

        遇到问题不要慌,多利用print语句,学会运行调试,分析结果,定位问题原因。

        成长之路,道阻且长,后续会继续总结自己平时遇到的一些问题,加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值