热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

初练接口测试脚本

引言:直接去编写一个完全没有接触过得脚本无疑是非常困难的,但是采取拆分以及迭代的方法一步步编写脚本就会好理解很多。目录v1.0发送请求,

引言:直接去编写一个完全没有接触过得脚本无疑是非常困难的,但是采取拆分以及迭代的方法一步步编写脚本就会好理解很多。


目录

v1.0 发送请求,获取响应结果

v2.0 传入接口测试数据

v3.0 对响应结果进行校验,得出测试结论

v4.0 从文件中传入多组测试数据

v5.0  把每一组测试数据对应的测试结果写入接口测试报告中




接口信息
接口请求地址:http://localhost:8080/jwshoplogin/user/login.do
接口请求参数:1.username:李明 2.password:123456
预期结果:登录成功、用户名不存在、密码错误





v1.0 发送请求,获取响应结果


  1. 定义接口请求地址:url = "接口请求地址"
  2. 通过request对象调用post方法发送请求,并接受响应:respOnse= request.post(url).text
  3. 调式脚本:print响应结果

v1.0代码如下:

# 针对登录接口进行测试
# 接口请求地址:http://localhost:8080/jwshoplogin/user/login.do
# 接口请求参数:1.username:李明 2.password:123456
# 预期结果:登录成功、用户名不存在、密码错误
import requests
url = "http://localhost:8080/jwshoplogin/user/login.do"
respOnse= requests.post(url).text
print(response)

运行结果如下,因为没有输入参数,所以可以当成是输入为空。

{"status":1,"msg":"用户名不存在"}




v2.0 传入接口测试数据


  1. 定义字典类型进行接口参数的赋值:userinfo = {"username":"李明", "password":"123456"}
  2. 传入到post方法中:respOnse= request.post(url, data=userinfo).text

v2.0代码如下:

import requests
url = "http://localhost:8080/jwshoplogin/user/login.do"
userinfo = {"username":"李明","password":"123456"}
respOnse= requests.post(url, data=userinfo).text
print(response)

运行结果如下:

{"status":0,"msg":"登录成功"}




v3.0 对响应结果进行校验,得出测试结论


  1. 调用find方法,查找返回的字符中是否存在对应的信息:msg = response.find("预期结果")
  2. 判断语句得出相关的测试结论先用if语句实现功能。

v3.0代码如下:

import requests
url = "http://localhost:8080/jwshoplogin/user/login.do"
userinfo = {"username":"李明","password":"123456"}
respOnse= requests.post(url, data=userinfo).text
print(response)
msg = response.find("登录成功")
if msg > 0:print("测试通过")
else:print("测试失败")




v4.0 从文件中传入多组测试数据


  1. 准备测试数据的csv文件
  2. 读取csv文件中的测试数据
    1. 以只读方式打开文件:file = open("userinfo.csv", "r")
    2. 获取文件中的数据--循环结构
      1. table = csv.reader(file)
      2. for row in table:
      3. print(row[下标])
    3. 把测试数据放入字典中:userinfo["参数的名字"] = row[下标]

v4.0代码如下:

import requests
import csv
# 1、调用接口
url = "http://localhost:8080/jwshoplogin/user/login.do"
# 2、传入接口参数
# 2.1 读取csv文件中的数据
file = open("userinfo.csv", "r")
table = csv.reader(file)
# 把测试数据放入字典中
userinfo = {}
for row in table:userinfo["username"] = row[0]userinfo["password"] = row[1]# 3、获取接口响应结果respOnse= requests.post(url, data=userinfo).textprint(response)# 4、进行比对,得出测试结论msg = response.find(row[2])if msg > 0:print("测试通过")else:print("测试失败")




v5.0  把每一组测试数据对应的测试结果写入接口测试报告中


  1. 创建一个可写入的文件:file2 = open("test_result.csv", "w")   # 因为文件不能同时阅读和书写,所以只能创建一个新的文件去填写测试数据。
  2. 向文件中写入内容file2.write("李明" + "," + "123456" + "," + "登录成功" + "\n")  # 后面一定要加一个换行符,不然在写入的表格的时候不会自动换行。
  3. 最后记得关闭文件

v5.0代码如下:

import requests
import csv
file1 = open("userinfo.csv", "r")
file2 = open("test_result.csv", "w")
# 1、调用接口
url = "http://localhost:8080/jwshoplogin/user/login.do"
# 2、传入接口参数
table = csv.reader(file1)
userinfo = {}
for row in table:userinfo["username"] = row[0]userinfo["password"] = row[1]# 3、获取接口响应结果respOnse= requests.post(url, userinfo).textprint(response)r = response.find(row[2])if r > 0:print("测试通过") # 加print便于检查代码,后期可以注释掉file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试通过" + "\n")else:print("测试失败")file2.write(row[0] + "," + row[1] + "," + row[2] + "," + "测试失败" + "\n")file2.close()


推荐阅读
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 本文介绍了如何在Spring框架中使用AspectJ实现AOP编程,重点讲解了通过注解配置切面的方法,包括方法执行前和方法执行后的增强处理。阅读本文前,请确保已安装并配置好AspectJ。 ... [详细]
  • 短视频app源码,Android开发底部滑出菜单首先依赖三方库implementationandroidx.appcompat:appcompat:1.2.0im ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
author-avatar
手机用户2502907993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有