接口自动化断言怎么写(接口自动化测试断言)

大雄 522 2022-12-17


本文目录一览:

用postman做API自动化测试时,如何断言responsebody里面,某个字段的值是什么类型?

在test里面有你需要的功能.如图:为了演示清楚,按照箭头顺序,依次为1.2.3.4

首先在右边的下拉框中选择(1)response body:json value check,即json字符串解析,系统自动将一个简易的判断例子放在test框中(2),我按照个人习惯修改一下得到一根数据类型为数字的判断(3),之后你send请求时,如果返回值为number类型,则结果通过(4).

自己做测试的时候,只要在test里面加入3框中的内容就可以了.

这个是返回结果的json,具体怎么做,请自己想想,不懂请追问

接口自动化测试流程是什么?

了解了接口测试是什么之后,怎么做接口测试呢?接口测试的流程其实和功能测试流程类似:接口测试计划-接口测试用例-接口测试执行-接口测试报告。测试用例设计的依赖对象主要是需求说明书和接口文档。

接口测试因其不是针对普通用户,而是针对的另外一个系统组件,所以不能直接测试,需要使用工具测试,比如服务端http接口测试,常用的工具有jmeter、postman、httpclient等。用工具测试,所以目标就是准备要测试数据测试脚本后直接执行即可, 在进行测试执行编写时,有如下的原则:

1.不同的接口参数覆盖不同的业务场景;

2.在后台构造合适的数据来满足接口的测试用例;

3.根据接口的返回值,断言其是否返回期望结果,并查看数据库验证;

4.测试用例涉及多个步骤的,应对涉及的步骤都验证;

5.删除测试过程中产生的结果,确保每个用例执行前都是一个清洁的环境

接口自动化测试怎么做的

了解了接口测试是什么之后,怎么做接口测试呢?接口测试的流程其实和功能测试流程类似:接口测试计划-接口测试用例-接口测试执行-接口测试报告。测试用例设计的依赖对象主要是需求说明书和接口文档。

接口测试因其不是针对普通用户,而是针对的另外一个系统组件,所以不能直接测试,需要使用工具测试,比如服务端http接口测试,常用的工具有jmeter、postman、httpclient等。用工具测试,所以目标就是准备要测试数据测试脚本后直接执行即可, 在进行测试执行编写时,有如下的原则:

1.不同的接口参数覆盖不同的业务场景;

2.在后台构造合适的数据来满足接口的测试用例;

3.根据接口的返回值,断言其是否返回期望结果,并查看数据库验证;

4.测试用例涉及多个步骤的,应对涉及的步骤都验证;

5.删除测试过程中产生的结果,确保每个用例执行前都是一个清洁的环境


java接口自动化是导出表格怎么断言


要看你用的是什么自动化工具了,我常用的是jsoup,htmlunit,selenium,这些工具都能遍历表格,通过jsoup元素选择器可以得到Elements对象,遍历它就可以。后面两个通过xpath选择器可以返回一个集合,遍历这个集合也可以

如何创建 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会通过控制台查看)

Apifox 断言怎么写?

Apifox是一款用于接口文档定义、Mock 数据、接口自动化测试等等方面的工具,它的功能高效好用,接口云端同步,实时更新。 支持数据结构(JSON Schema)管理.,断言就是判断是否跟预期结果一致,不一致的话,测试用例直接失败,程序便不再执行下去。

举个简单的例子。比如点击某个按钮会跳转到某个页面上,我们会设置断言为是否能成功跳转到这个页面上,验证的话,一般为这个页面的信息。如果都不跳转成功,那么页面信息就什么没有,那么验证也无从入手。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在接口测试(在接口测试中遇到过什么问题)
下一篇:关于接口测试用postman还是jmeter的信息
相关文章

 发表评论

暂时没有评论,来抢沙发吧~