接口自动化(三):实战进阶

上一篇的文章响应比较热烈,今天来写篇进阶代码,大体分为两部分,csv读出所有的接口文件和 把所有的测试结果写进csv文件里
首先我先讲一下,读接口文件
test_interface.csv接口文件样式:
在这里插入图片描述给大家解释一下部分列的含义
url访问地址,expresult预期结果,interfaceName接口名称,一串数字那一列(2,6,2)是参数个数,代码里面会用到,后面就是参数名称及参数值了。
下面直接上代码:

 import csv
 file=open("test_interface.csv","r")
 table=csv.reader(file)
 userinfo={}
 for row in table:
      url=row[1]
      expresult=row[3]
      interfaceName=row[5]
      #上面的就是分别拿到url,预期结果,接口名称,下面才是重点,因为每个请求参数个数会不一样这里要再套个循环读取请求参数,会有一点弯弯绕
      #j拿到参数个数,因为在第七列所以拿row[6]
     j=int(row[6])
     #这里的意思是,i从7开始,每次加2,一直到i大于2*j+7结束,大家可以想一下对不对
     for i in range(7,2*j+7,2):
     	#row[i]为参数名,row[i+1]为参数值
         userinfo[row[i]]=row[i+1]
     这样我们就拿到请求参数全部信息了
     print(userinfo)
     userinfo={}

下面是把测试结果写到csv文件里面

#这段是测试代码
file=open("test_all.csv","a")
#模拟响应回来数据是resData
resData={"接口名":"登录接口","实际响应结果":"成功","测试结论":"通过"}
#这次循环是分别拿到resData的key和value值
for key,value in resData.items():
    print(key,value)
    #写进文件里面
    file.write(str(key)+","+str(value)+",")
#每个响应写完要换行 所以要\n
file.write("\n")
file.close()

好了,两个主体介绍完了 上整体代码:

import requests
import csv
class workflow_forgotpassword_final_test():
#这里因为每个请求都会经历这一步,所以在这里进行封装,每个参数意义,已经在上面介绍过了,相信大家这段都应该看得懂吧,拿到响应数据
    def all_test(self,url,userinfo,expresult,interfaceName):
        resData={}
        response=requests.post(url,data=userinfo).text
        resData["接口实际返回值"] = str(response)
        r=response.find(expresult)
        if r>0:
            print(interfaceName,"pass")
            resData["测试结论"]="pass"
        else:
            print(interfaceName,"fail")
            resData["测试结论"] = "fail"
        #这里resData拿到两对值一个是接口实际返回值,另外一个是测试结论
        return resData
      #这个是把测试结果写进csv文件
    def res_report(self,interfaceName,reportFileName,resData):
    #a为追加写,w为覆盖写
        file=open(reportFileName,"w")
        #第一列为接口名称
        file.write(interfaceName+",")
        #后面是遍历响应回来的数据
        for key,value in resData.items():
            file.write(key+","+value+",")
        file.write("\n")
        file.close()
  #主函数调用      
if __name__ == '__main__':
#对象实例化
    final_obj=workflow_forgotpassword_final_test()
    file=open("test_interface.csv","r")
    #定义结果文件名称
    reportFileName="test_resAll.csv"
    resData={}
    table=csv.reader(file)
    for row in table:
        url=row[1]
        expresult=row[3]
        interfaceName=row[5]
       #在这里为什么要定义一个空的userinfo,因为下面的循环,每循环一次就是一个请求的所有参数,如果这里不是空的 ,下次整体循环的时候,就会追加了,肯定不对的
        userinfo={}
        # print(url,interfaceName,expresult)
        j=int(row[6])
        for i in range(7,2*j+7,2):
            userinfo[row[i]]=row[i+1]
      #拿到参数,调用发送请求,以及断言部分
        resData=final_obj.all_test(url,userinfo,expresult,interfaceName)
      #结果写进csv
        final_obj.res_report(interfaceName,reportFileName,resData)

好了,大功告成,以后不管有什么请求只需要往test_interface.csv文件填充就好了,最后附上结果文件样子:
在这里插入图片描述略有瑕疵,响应数据分开了,不过可以优化的,交给大家了,这样其实也可以用啦
最后,欢迎大家多多留言,还有最后一篇接口自动化框架的,大家期待下吧

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芳草乀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值