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

jemeterpython接口自动化测试平台_PYTHON自动化Day1Jmeter制作接口测试脚本

一.接口1.内部接口程序内部模块之间的交互时使用的接口2.外部接口用户使用程序时调用的接口我们所做的接口自动化测试,是外部接口测试。接口实际上就是对数据库的

一.接口

1.内部接口

程序内部模块之间的交互时使用的接口

2.外部接口

用户使用程序时调用的接口

我们所做的接口自动化测试,是外部接口测试。接口实际上就是对数据库的各种操作。接口测试可以发现一些页面上操作发现不了的bug。越早发现bug,解决bug的成本是越低的。

一个网站分为:前端和后端,前端也就是客户端,后端及服务端、server端。

前端 后端

| |

客户端 服务端

前端和后端就是通过接口交互的。那么接口返回的数据是json格式的,json是一个通用的数据类型,是key-value格式的,注意在使用json传参时,一定要注意格式。

例如,一个json数据类型的举例:

{"error_code": 0,"stu_info": [

{"id": 1,"name": "nana","sex": "女","age": 28,"addr": "河北省保定市","grade": "天蝎座","phone": "18612532911","gold": 100},

{"id": 2,"name": "lily","sex": "女","age": 28,"addr": "江苏省苏州市","grade": "天蝎座","phone": "18612538946","gold": 100},

]

}

3.接口测试

测试接口的话,必须得有接口文档:

1、url2、请求方式 post、get等3、入参(请求参数)4、返回参数5、请求、返回示例6、 状态码说明

接口的协议类型

1.http接口:通过http协议,有get post等方法,返回常为json串。

get请求他没有请求体,只有请求头

get请求的参数只能写在url后面或者COOKIE里面,get请求直接用浏览器就能发送了

如:http://xxxxxxxx/api/user/stu_info?stu_name=lily&id=1

post有请求头和请求体

请参数放在请求体里面,post请求就需要借助postman jmeter等工具了

如在postman中,post类型的请求的参数和COOKIE:

在body中添加参数

1348104-20180311104013493-1534345204.png

在headers中添加COOKIE

1348104-20180311103838815-39610235.png

2. webservice接口:soap协议通过http传输,请求报文和返回报文都是xml格式,需要通过工具进行调用和测试。

后面会讲到。

二.Jmeter接口测试脚本制作

先修改两个地方,保证我们的请求体和响应中的中文能正常显示。

1.Jmeter 中响应乱码:

修改bin/jmeter.properties

搜sampleresult.default.encoding

sampleresult.default.encoding=utf-8 保存后重启jmeter生效

1348104-20180311104555258-814640763.png

2.Jmeter中请求体乱码

(当前使用jmeter版本为3.0,在3.3版本中没有看到请求体乱码)

修改bin/jmeter.properties

搜 jsyntaxtextarea.font.family

jsyntaxtextarea.font.family=宋体 保存重启jmeter生效

3.测试脚本的制作

(1)get类型的请求

接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=8

1348104-20180311104943088-1403581441.png

1348104-20180311105007002-106310584.png

(2)post类型的请求

接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=12

例如:登录

1348104-20180311110006609-1251867301.png

1348104-20180311110028327-204081952.png

(3)post类型需要通过json传参数:

接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=10

1348104-20180311110205035-1375572651.png

1348104-20180311110259489-1116510463.png

(4)需要添加信息头的请求

接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=14

1348104-20180311110605228-876668279.png

1348104-20180311110554565-1766619598.png

1348104-20180311110743744-635733582.png

(5)需要COOKIE信息的请求:

接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=11

1348104-20180311110919692-903155706.png

1348104-20180311110931622-459750046.png

1348104-20180311110959737-1967947743.png

(6)上传文件的请求:

接口文档:http://doc.nnzhp.cn/index.php?s=/6&page_id=11

1348104-20180311111051970-1563033929.png

1348104-20180311111115763-1939177332.png

4.Jmeter的其他常用技巧:

(1)参数化

因为数据库可能会校验数据的唯一性,所以我们需要使用参数化。

除了使用csv定义参数化文件外,可以用用户自定义变量来参数化,或者用函数助手来参数化

用户自定义变量参数化:

1348104-20180319214459525-199368221.png

csv文件方式参数化:

1348104-20180311114216619-1779942965.png

1348104-20180311114226740-351074980.png

1348104-20180311114256386-1975501247.png

(2)关联

后面的请求需要用到前面请求的返回值,所以我们获取到这个返回值后,把它作为参数,以供后面的请求去使用这个参数值。

如,添加金币请求需要登录请求的COOKIE,那么我们在登陆请求下加获取json中指定字段值来作为COOKIE,然后再添加金币请求后添加COOKIE管理器来使用这个COOKIE。

1348104-20180312205047375-1648110494.png

1348104-20180312205142657-2046221288.png

1348104-20180312205323980-1742300028.png

(3)断言

判断请求是否成功

如在登录请求下添加断言:

1348104-20180311114442196-858431104.png

1348104-20180311114611765-1695591821.png

断言判断成功时在查看结果树看不到,只有在失败时才会出现在查看结果树中

1348104-20180311114803586-1539522905.png

(4)生成随机数或时间戳

1348104-20180311114828407-532501458.png

1348104-20180311114837030-1387842191.png

用到的地方把变量粘过来就行了

时间戳:

格式自己选择 如:yyyyMMddHHmmss

1348104-20180311114916933-574700609.png

(5)jmeter操作数据库

Jmeter 连接数据库需要添加对应的jar,如mysql

mysql-connector-java-5.1.7-bin.jar

在测试计划导入jar或者把jar放入jmeter的lib目录下,

填写数据库信息,只填写最下面部分即可

jdbc:mysql://211.149.218.16:3306/jxz?allowMultiQueries=true&characterEncoding=UTF-8

com.mysql.jdbc.Driver

1348104-20180311115108037-1182197165.png

1348104-20180311115203917-1285680907.png

如果要插入中文:

1348104-20180311115220830-2126826150.png

(6)jmeter下载文件

参考:http://www.nnzhp.cn/archives/547

1348104-20180311122306784-59332616.png

1348104-20180311122316798-643826389.png

1348104-20180311122350766-1965844749.png

桌面上有下载到的图片:

1348104-20180311122415174-777105508.png



推荐阅读
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 那么多优秀的自动化测试工具,而你只知道Selenium?
    如今,作为一名软件测试工程师,几乎所有人都需要具备自动化测试相关的知识,并且懂得如何去利用工具,来为企业减少时间成本和错误成 ... [详细]
author-avatar
手机用户2502905891
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有