本篇文章给大家谈谈自动化接口测试教程,以及自动化接口测试教程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享自动化接口测试教程的知识,其中也会对自动化接口测试教程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
接口自动化测试之Mock
Mock介绍
1.找到要替换自动化接口测试教程的对象自动化接口测试教程:我们需要测试的是visit_ustack这个函数自动化接口测试教程,那么我们需要替换掉send_request这个函数。
2.实例化Mock类得到一个mock对象,并且设置这个mock对象的行为。在成功测试中,我们设置mock对象的返回值为字符串“200”,在失败测试中,我们设置mock对象的返回值为字符串"404"。
3.使用这个mock对象替换掉我们想替换的对象。我们替换掉自动化接口测试教程了client.send_request
4.写测试代码。我们调用client.visit_ustack(),并且期望它的返回值和我们预设的一样。
上面这个就是使用mock对象的基本步骤了。在上面的例子中我们替换了自己写的模块的对象,其实也可以替换标准库和第三方模块的对象,方法是一样的:先import进来,然后替换掉指定的对象就可以了。
Mockrunner用在J2EE环境中进行应用程序的模拟测试。它不仅支持Struts actions,servlets,过滤器和标签类,还包括一个JDBC和一个JMS测试框架,可以用于测试基于EJB的应用程序。
Mockrunner扩展了JUnit并模拟了必要的行为,而无需调用实际的基础结构。它不需要正在运行的应用程序服务器或数据库。此外,它不会调用web容器或Struts ActionServlet。它非常快速,使用户可以在测试的所有步骤中操纵所有涉及的类和模拟对象。它可以用于为基于J2EE的应用程序编写非常复杂的单元测试,而不会产生任何开销。Mockrunner不支持任何类型的容器内测试。
Mockrunner不会读取任何配置文件,例如web.xml或struts-config.xml。您可以使用Mockrunner API指定所有参数。因此,可以将servlet,过滤器,标签和Struts动作作为可重用组件进行测试,而不管您在一个或另一个应用程序中使用的设置如何。无法测试配置文件中的定义。如果要这样做,可以将StrutsTestCase用于基于Struts的应用程序或Cactus。
Mockrunner支持Java版本从1.3到1.6以及J2EE 1.3,J2EE 1.4和JavaEE5。尚不支持EJB 3.0。Mockrunner支持Struts版本1.1、1.2和1.3。
下载地址:Mockrunner download | SourceForge.net
最后:【可能给自动化接口测试教程你带来帮助的教程】软件测试最新自学教程
接口自动化测试
接口 :外部系统与本系统之间以及系统内部的各个子系统间,以约定标准提供的服务,包括对外提供的接口/对内提供的接口。
在这块自动化接口测试教程我们举一个比较生活化的例子,我们平常使用的笔记本,在笔记本的两端有很多小插口,最常见的就是USB插口,我们可以把鼠标连接在USB插口上,也可以把键盘、U盘连接在USB插口上,为什么同一个USB接口可以连接这么多设备呢,其实这个接口,自动化接口测试教程他就有一个统一对外的连接标准。
在我们开发当中,也有一个对外暴露的接口,因为他们服务的协议都是统一的,最常见的就是hhtp协议,我们规定好一种格式,让客户端来调用我们。
这里面键盘鼠标属于调用方,插到笔记本的USB上,就可以连接设备,就可以进行操作自动化接口测试教程了。对外暴露的一个统一的一个规范,这样去理解接口,更形象一些。
在自动化接口测试教程了解完什么是接口之后,我们来说一下什么是接口测试。
接口测试 测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等,保证对外提供接口的正确性和健壮性。
我们在具体测试过程中,我们不用关心接口调用方和接收方的实现逻辑,我们只需要知道传入什么数据,返回什么的结果是否达到我们的预期。接口测试其实也是黑盒测试,他与UI测试的区别就是没有界面交互,是不可视化的。
测试前置 :我们不能等到整个系统全部开发完成才能进行测试,我们可以通过调用接口来进行测试,把问题拦截在前期,降低问题修复成本。
Bug更容易定位 :因为我们按接口进行测试,出现问题后在被测接口中排查就可以了,它比系统集成之后,发现问题更容易定位,系统集成之后有各种模块的调用,出现bug之后再排查,排查的链路非常的长。另外从机制上更接近出问题的地方更容易命中问题。
前后端分离结构 :现在很多系统都采用前后端分离架构,各服务之间更多的是通过接口来实现信息互通,对接口进行直接测试,可以更全面的覆盖各类测试场景。
自动化测试落地性价比高 :比UI自动化测试更稳定,我们上面已经说了UI层的元素时常发生变化,有时改一个简单的元素,都有可能导致我们的自动化测试走不下去,写一套自动化测试脚本比较容易的,但是维护起来,会耗费很大的时间精力,相对来说,接口就比较稳定,一个项目没有大的改造,入参和出参就是固定的,变化的概率比较小,这样维护起来也比较方便。
减少安全隐患 :比如我们在平常的测试过程中,测试用户名和密码,密码格式要求不能输入特殊字符,前端做了校验,而后端没有处理,这样我们只测试页面,这条case就默认通过了,但一些黑客可能通过抓包的方式进行登录,这样安全隐患就比较大了。我们对接口进行安全测试,可以避免安全隐患。
借助工具 : Postman、Jmeter、jsf平台、jsf测试工具、easytest
编写测试脚本 :Java+TestNG
请关注下一篇如何使用Java+TestNG进行接口自动化测试
接口自动化测试环境搭建jmeter+ant+git+jenkins
1、安装java
方式一:安装java环境:yum install java-1.8.0-openjdk* -y
使用命令检查是否安装成功 java -version
到此安装结束了。这样安装有一个好处就是不需要对path进行设置,自动就设置好了。jdk安装在/usr/lib/jvm目录下
方式二:先下载对应版本到本地,然后解压缩,配置环境变量(详细步骤百度即可)
2、安装jmeter
(1)登录自己服务器,在usr/local下创建文件夹jmeter,命令mkdir jmeter
(2)通过官网下载jmeter到本地
(3)通过xhell上传到对应的目录(cd到要上传的目录)
(4)yum -y install lrzsz(安装了lrzsz,执行该命令是因为服务器有的文件不让上传。让上传就不用执行)
(5)使用 rz -y命令进行文件上传,此时会弹出上传的窗口,进行上传即可
(6)上传成功之后进行解压 unzip apache-jmeter-5.4.zip
(7)配置环境变量vi /etc/profile
esc+shift # 键盘同时按住,退出编辑模式
:wq # 保存退出
:q # 不保存退出
添加如下内容:
# set Jmeter enviroment
export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.4
export PATH=${PATH}:${JMETER_HOME}/bin
(8)source /etc/profile # 使配置文件生效
(9)jmeter -version
3、安装ant
(1)在usr/local下创建文件夹ant,命令mkdir ant
(2)通过官网下载ant到本地
(3)使用 rz -y命令进行文件上传,此时会弹出上传的窗口,进行上传即可 sz 文件名(服务器文件下载到本地)
(4)上传成功之后进行解压 unzip
(5)配置环境变量vi /etc/profile
# set Ant enviroment
export ANT_HOME=/usr/local/ant/apache-ant-1.10.10
export PATH=${PATH}:${ANT_HOME}/bin
(6)source /etc/profile # 使配置文件生效
(7)ant -version
4、ant的配置
(1)将jmeter安装包extras文件夹里ant-jemter-1.1.1.jar 复制到antlib下
cp ant-jmeter-1.1.1.jar /usr/local/ant/apache-ant-1.10.10/lib
(2)进入apache-jmeter-3.0extras运行ant ,查看该目录下是否出现Test.jtl、Test.html文件,若有,则构建成功
5、编写Ant的build.xml文件
(1)创建Jmeter_Test目录,放在/usr/local/下
(2)Jmeter_Test目录下创建build.xml、ResultLog(html,jtl)、Script(放脚本)
(3)build.xml文件内容去https://www.cnblogs.com/L-Test/p/9736808.html下复制,需要修改里边的路径
6、jenkins安装
(1)Jenkins下载地址:https://jenkins.io/download/
(2)下载的是jenkins.war
(3)在Linux下启动Jenkins有两种方式,一种是在jenkins.war的存放目录下使用命令java -jar jenkins.war启动,
另外一种是把jenkins.war放在tomcat的webapps目录下,然后启动tomcat就可以了(本次用的第一种)
(4)在浏览器中输入http://服务器ip:8080/jenkins/
如果是用的阿里云服务器,启动成功之后,在浏览器访问,无法访问。解决办法就是登陆阿里云服务器修改一下安全规则,把端口范围调大
(5)访问成功之后输入管理员密码
(6)安装推荐的插件,创建管理员用户
7、jenkins的其他配置
(1)修改为中文依赖的三个插件localization-zh-cn、locale、localization-support
jenkins插件下载地址https://blog.csdn.net/qq_39530199/article/details/90266654
(2)不知道依赖于那个插件,可以看看manage Jenkins里边的报错 plugin is missing
8、git的安装
(1)git下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/
(2)usr/local下新建git目录,cd到git,安装包上传上来, tar -zxvf v2.17.0.tar.gz
(3)安装编译源码所需依赖,命令为: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl- ExtUtils-MakeMaker 耐心等待安装,出现提示输入y即可;
(4)安装依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可;
(5)进入解压后的文件夹,命令 cd git-2.17.0 ,然后执行编译,命令为 make prefix=/usr/local/git all 耐心等待编译即可;
(6)安装Git至/usr/local/git路径,命令为 make prefix=/usr/local/git install ;
(7)打开环境变量配置文件,命令 vim /etc/profile ,在底部加上Git相关配置信息
# set Git enviroment
export GIT_HOME=/usr/local/git
export PATH=$GIT_HOME/bin:$PATH
(8)git version
9、jenkins安装相应插件
(1)安装源码管理选择git需要的插件git、git-server、git-client、github-api、plain-credentials、github
上传插件的时候可能会报错,可以把插件上传顺序改一下在上传
(2) jenkins设置git的安装路径,点击全局工具配置/usr/local/git/bin/git(whereis git 命令可查看)
(3)windows本地安装git,把代码推送到github(需要在github创建一个仓库),参考自动化测试的 《
(4)jenkins配置源码管理选择git,地址输入github项目地址,账号可以先在jenkins凭据配置中添加github账号
输地址或账号的时候可能会报403的错误。解决办法刷新一下或者 在Configure Global Security中开启 启用代理兼容
(5)配置完源码管理,直接进行构建,代码自动下载到/root/.jenkins/workspace/git/路径下
10、接下来需要把build.xml中脚本路径改为/root/.jenkins/workspace/git/进行构建,可以在Github里提交一个jmx文件构建一下试试
如何用python做自动化测试
用python做自动化测试
自动化接口测试教程,主要是接口测试和UI自动化测试。
一、接口测试:
http协议
自动化接口测试教程的举例:
可以用python自带
自动化接口测试教程的urllib\urllib2模拟
自动化接口测试教程,模拟前端向服务器发送数据,获取返回值后,进行校验和判断来进行接口测试。
网上
自动化接口测试教程的例子也比较多,这里简单说一下,
比如request中data的边界值测试、字符测试、非空为空测试等等,都可以做
二、UI自动化测试:
html页面(python+selenium)或者一些安卓app(python+appiun)可以用。
主要是页面元素的检查、输入等。
比如可以写一个脚本,自动登录百度页面,搜索某一个关键字,并且获得此关键字的百度搜索数量。
如何创建 python+requests接口自动化测试框架
工作原理: 测试用例在excel上编辑
自动化接口测试教程,使用第三方库xlrd
自动化接口测试教程,读取表格sheet和内容,sheetName对应模块名,Jenkins集成服务发现服务moduleName查找对应表单,运用第三方库requests请求接口,根据结果和期望值进行断言,根据输出报告判断接口测试是否通过。
1. 数据准备
数据插入(容易实现的测试场景下所需外部数据)
准备sql (接口需要重复使用,参数一定得是变量)
2.集成部署(运维相关了解即可)
平滑升级验证脚本加入自动化
3.自动化框架实现
调用mysql
excel遍历测试用例
requests实现接口调用
根据接口返回的code值和Excel对比
报告反馈
暴露服务
写一个简单登录的接口自动化测试
代码的分层如下图
自动化接口测试教程:
coding.png
一、写一个封装的获取excel表格的模块
excel.png
代码实现如下
自动化接口测试教程:
# !/usr/bin/python
# -*- coding: UTF-8 -*-
# 基础包:excel的封装
import xlrd
workbook = None
def open_excel(path):
"""打开excel"""
global workbook
if (workbook == None):
workbook = xlrd.open_workbook(path, on_demand=True)
def get_sheet(sheetName):
"""获取行号"""
global workbook
return workbook.sheet_by_name(sheetName)
def get_rows(sheet):
"""获取行号"""
return sheet.nrows
def get_content(sheet, row, col):
"""获取表格中内容"""
return sheet.cell(row, col).value
def release(path):
"""释放excel减少内存"""
global workbook
workbook.release_resources()
del workbook
代码封装后当成模块引用,这还是最开始呢。
二、引用log模块获取日志
准备工作:
需要一个日志的捕获,包括框架和源码抛出的expection。
代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 基础包:日志服务
import logging
import time
def getLogger():
global tezLogPath
try:
tezLogPath
except NameError:
tezLogPath = "/data/log/apiTest/"
FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# file = tezLogPath + time.strftime("%Y-%m-%d", time.localtime()) + ".log"
# logging.basicConfig(filename=file, level=logging.INFO, format=FORMAT)
# 开发阶段为了方便调试,可不输出到文件
logging.basicConfig(level=logging.INFO, format=FORMAT)
return logging
三、引用requests模块接口测试
准备工作:
需要的请求类型和执行测试的方法。
代码如下:
#!/usr/bin/python#
#-*- coding: UTF-8 -*-
# 基础包:接口测试的封装
import requests
import tezLog as log
logging = log.getLogger()
def api_test(method, url, data ,headers):
"""
定义一个请求接口的方法和需要的参数
:Args:
method - 企业名称 str
url - 用户昵称 str
data - 参数 str
headers - 请求头信息 dict
非RESTful API请求另外的请求类型实际用不到。也不安全。
"""
try:
if method == "post":
results = requests.post(url, data, headers=headers)
if method == "get":
results = requests.get(url, data, headers=headers)
# if method == "put":
# results = requests.put(url, data, headers=headers)
# if method == "delete":
# results = requests.delete(url, headers=headers)
# if method == "patch":
# results == requests.patch(url, data, headers=headers)
# if method == "options":
# results == requests.options(url, headers=headers)
response = results.json()
code = response.get("code")
return code
except Exception, e:
logging.error("service is error", e)
def run_test(sheet):
"""
定义一个执行和断言的方法
:Args:
sheet - 服务名称 str(excel页脚名称识别的)
"""
rows = excel.getRows(sheet)
fail = 0
for i in range(2, rows):
#这里为什么从第二行开始跑,因为会先执行SQL进行数据准备如之前Excel展示的空白位置
testData = excel.getContent(sheet, i, gl.CASE_DATA)
testUrl = excel.getContent(sheet, i, gl.CASE_URL)
testMethod = excel.getContent(sheet, i, gl.CASE_METHOD)
testHeaders = eval(excel.getContent(sheet, i, gl.CASE_HEADERS))
testCode = excel.getContent(sheet, i, gl.CASE_CODE)
actualCode = request.apiTest(testMethod, testUrl, testData, testHeaders)
expectCode = str(int(testCode))
failResults = ' url: ' + testUrl + ' params: ' + testData + ' actualCode: ' + actualCode + ' expectCode: ' + expectCode
if actualCode == expectCode:
logging.info("pass")
elif actualCode != expectCode:
logging.info("fail %s", failResults)
fail += 1
if fail 0 :
return False
return True
四、关于参数中gl模块
准备工作:
所有的参数和常量我们会整理到这个文件中,因为设计业务和服务密码、数据库密码这里展示一部分。
代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 脚本功能:全部变量
import time
import uuid
CASE_NUMBER = 0 # 用例编号
CASE_NAME = 1 # 用例名称
CASE_DATA = 2 # 用例参数
CASE_URL = 3 # 用例接口地址
CASE_METHOD = 4 # 用例请求类型
CASE_CODE = 5 # 用例code
CASE_HEADERS = 6 # 用例headers
SQL_ROW = 0 # 预执行SQL的行号
SQL_COL = 1 # 预执行SQL的列号
五、写一个run文件:只是用来执行的,业务和代码剥离。
代码如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 验证包:接口测试脚本
import sys
import core.tezLog as log
import function.common as common
logging = log.getLogger()
"""1.外部输入参数"""
path = sys.path[0] # 当前路径
module = sys.argv[1] # 服务模块名
url = sys.argv[2] # 服务地址
host = sys.argv[3] # 数据库地址
user = sys.argv[4] # 数据库用户名
password = sys.argv[5] # 数据库密码
db = sys.argv[6] # 数据库名称
"""2.根据module获取Sheet"""
logging.info("-------------- Execute TestCases ---------------")
sheet = common.get_excel_sheet(path + "/" + common.filename, module)
"""3.数据准备"""
logging.info("-------------- Prepare data through MysqlDB --------------")
sql = common.get_prepare_sql(sheet)
common.prepare_data(host=host, user=user, password=password, db=db, sql=sql)
"""4.执行测试用例"""
res = common.run(sheet, url)
logging.info("-------------- Get the result ------------ %s", res)
"""这里的res是我们平滑升级的时候需要返回结果为TRUE才会继续下面走。"""
六、查看测试报告(部署到jenkins会通过控制台查看)
关于自动化接口测试教程和自动化接口测试教程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
自动化接口测试教程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于自动化接口测试教程、自动化接口测试教程的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~