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

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

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

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

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

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

在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言assert。

接口请求断言是指在发起请求之后,对返回的响应内容去做判断,用来查看是否响应内容是否与规定的返回值相符。

在发起请求后,我们使用一个变量 r 存储响应的内容,也就是 Response 对象。

Response 对象有很多功能强大的方法可以调用,比如直接获取响应头,获取 Unicode 编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。

接下来我们就详解

对接口服务发起 HTTP 请求信息,获得响应内容之后,对其做断言验证。

一、Python 接口自动化断言

在发起请求后,使用一个变量r存储响应的内容,也就是Response对象。

r = requests.get("https://xxxxx")

登录后复制

响应结果:

{

"args": {},

"headers": {

"Accept": "*/*",

"Accept-Encoding": "gzip, deflate",

"Host": "httpbin.ceshiren.com",

"User-Agent": "python-requests/2.25.1",

"X-Forwarded-Host": "httpbin.ceshiren.com",

"X-Scheme": "https"

},

"origin": "119.123.205.82",

"url": "https://xxxxx"

}

登录后复制

Response 对象有很多功能强大的方法可以调用,比如直接获取响应头,获取 Unicode 编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。

响应断言

响应状态码断言

1、断言成功

import requests

r = requests.get('https://xxxxx')

assert r.status_code==200

登录后复制

assert是 python 的内置函数,用来判断表达式,当表达式条件为 False 的时候就会触发异常。r.status_code是 response 对象内的一个方法,用于获得返回值的状态码。assert r.status_code==200 就是在判断状态码是否等于 200,如果不等于 200 则会抛出异常。

2、断言失败

>>>import requests

>>>r = requests.get('https://xxxxx')

>>>assert r.status_code==400

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

AssertionError

登录后复制

从以上例子可了解到,此响应状态码实际输出与预期结果状态码 400 不相等,所以抛出了异常。

Json 响应断言

data = {

"hogwarts": ["a","b","c"]

}

r = requests.post('https://xxxxx',json=data)

print(json.dumps(r.json(),indent=2))

assert r.status_code == 200

assert r.json()["json"]["hogwarts"][0] == "a"

登录后复制

响应结果:

"args": {},

"data": "{"hogwarts": ["a", "b", "c"]}",

"files": {},

"form": {},

"headers": {

...省略...

},

"json": {

"hogwarts": [

"a",

"b",

"c"

]

},

"origin": "113.89.8.68",

"url": "https://xxxx"

}

登录后复制

通过 assert r.json()[“json”][“hogwarts”][0] == “a” 对 json 的内容进行断言,其中 r.json() 是获取相应的内容,r.json()[“json”] 是获取到 json 的内容,r.json()[“json”][“hogwarts”] 是获取到 hogwarts 的内容,r.json()[“json”][“hogwarts”][0] 是 hogwarts 下的第一个数据。

二、Java 接口自动化断言

Java 通过 then 进行断言验证,then() 方法可以对多种不同类型的响应信息进行验证。

断言响应状态码成功

import static io.restassured.RestAssured.*

public class Requests {

public static void main(String[] args) {

given().when().get("https://xxxxx").

//通常通过 then 进行断言验证

then().statusCode(200)

}

}

登录后复制

通过 then() 方法提供的 statusCode() 方法即可实现对于响应状态码的验证,statusCode() 方法通常接收的是 int 类型的参数。statusCode(200) 表示判断响应状态码是否等于 200,如果不等于 200 则会抛出异常。

如果将以上代码中断言验证的代码改成 statusCode(300),那么控制台则会输出异常信息。

Exception in thread "main" java.lang.AssertionError: 1 expectation failed.

Expected status code <300>but was <200>.

登录后复制

json 响应断言

import static io.restassured.RestAssured.*

import static org.hamcrest.core.IsEqual.equalTo

public class Requests {

public static void main(String[] args) {

given().when().get("https://xxxxx").

then().body("headers.Host", equalTo("httpbin.ceshiren.com")).log().all()

}

}

登录后复制

通过 then().body(“headers.Host”, equalTo(“httpbin.ceshiren.com”)) 对 json 的内容进行断言,其中 then().body() 是获取相应的内容。

第一个参数是从响应内容中提取实际的字段值。

第二个参数调用了 equalTo() 方法,并在其中传入了期望结果。

三、总结

不是所有的拼搏都会成功,我们不能盲目的拼搏,必须带上我们的智慧,将属于我们的机会牢牢抓住,才会多一份成功。

青春是短暂的,而这短暂的时间里我们的任务很重。让花儿尽情的开吧,只要它不是落了一个虚度年华的罪名,那么,我都乐意。

这世界从来不会跟你过不去,你得到的任何好与坏,都是自己做的。根本没有正确的选择,我们只不过是要努力奋斗,使当初的选择变得正确。

1024程序员节

自动化测试

软件测试工程师

软件测试

测试开发

全国股民的福音来了!

诊断涨停板

广告

python自动化断言封装

1289阅读·0评论·0点赞

2022年4月25日

自动化脚本测试代码参考

400阅读·0评论·1点赞

2022年6月29日

python-web自动化测试-断言

3069阅读·0评论·1点赞

2021年11月18日

pytthon自动化代码大全

1445阅读·0评论·2点赞

2022年1月17日

pythonui自动化断言,python UI自动化13- 断言方法

2353阅读·0评论·2点赞

2021年4月27日

python 接口断言的方法_python接口自动化—unittest 常用的断言方法

1798阅读·0评论·0点赞

2021年2月9日

沧州全屋定制仅需1.68万,输入面积,算算你家需要多少钱?

00:34

全友全屋定制

查看详情

全友全屋定制

广告

python requests接口自动化测试 (数据库断言)

2277阅读·0评论·6点赞

2022年5月16日

python unittest断言_python接口自动化(二十三)--unittest断言——上(详解)

196阅读·0评论·0点赞

2020年11月29日

Python自动化之结果断言篇

2143阅读·0评论·3点赞

2021年7月16日

接口自动化框架之python pytest断言assert(一)

763阅读·0评论·0点赞

2022年5月18日

python自动化测试常用断言的使用方法

2522阅读·0评论·1点赞

2018年9月12日

Web自动化测试:测试用例断言

1180阅读·0评论·0点赞

2022年5月12日

python写测试脚本语言_python测试学习-自动化测试的执行步骤

335阅读·0评论·0点赞

2020年12月13日

做python自动化得时候怎么添加断言_python接口自动化 - 断言(上)

2019阅读·0评论·0点赞

2020年12月11日

全网最详细的Python自动化测试

1755阅读·0评论·0点赞

2022年10月15日

Python自动化测试项目的代码编写规范

1269阅读·0评论·4点赞

2021年5月8日

用Python实现自动化测试

4326阅读·2评论·1点赞

2022年7月8日

Selenium自动化测试(断言 / fame框架处理)------实例

781阅读·0评论·0点赞

2021年11月29日

7个实用的Python自动化代码,别再重复造轮子了

1966阅读·0评论·0点赞

2022年4月23日

去首页

看看更多热门内容

评论16

Passerby_Wang

写得也太详细了吧,学到了好多 也欢迎博主来我这里指点一二呀

2022.10.25

测试内卷

曾经有一段时间,人们习惯于在MS Excel里面编写单元测试用例,然后开发人员就按照单元测试用例一步一步的来实现用例。这通常是很耗时的漫长的过程,尤其是如果应用很大或者UI很复杂的话。

这一套单元测试的执行过程常常成为瓶颈,因为任何代码修改都会带来手工执行大量单元测试,以确保新的修改没有破坏原有功能。

如今是个快节奏时代,人们希望工作能够无需人工介入、自动化的快速完成。每个人都喜欢执行一个命令就能把工作搞定,而且在执行期间不需要人工介入。需要做的仅仅是检查一下最终的输出结果。

当这个世界正在迈向自动化时,自动化测试也不甘落后,不论是在功能测试方面还是UI测试方面。每天我们都能听说自动化测试方面涌现出的新。

本文提供了一些信息给那些想用Coded UI自动测试框架来进行应用界面自动化的.Net开发者。

什么是Coded UI?

最近我一直在寻找一个自动化的用户接口测试的解决方案。用户接口测试需要用户多次进行手工输入 *** 作,这是一个既枯燥又费时的过程。因此,我想寻找一种更智能的自动化UI测试的方案,这种UI测试在不需要人工干预下,能够被保存,记录并提供支持 ,快速测试代码的改变。

Coded UI 采用用户接口来驱动应用的进行自动化测试。这些测试包括UI控制的功能性测试。他们使你可以验证整个应用的功能是否正确,其中包括了用户接口。Coded UI尤其适合用于用户接口中存在校验或者其它的登录方式的测试,比如网页。Coded UI也可以用于人工测试用例的自动化。

Coded UI 测试帮助用户测试应用程序的用户接口。这些测试允许用户验证应用程序的功能。Coded UI 多数时间用于帮助验证在UI层本身的有效逻辑。它能够验证值对用户接口的控制的正确性。

其它方案

市场有许多自动化用户接口的方案,比如HPuickTest Professional, IBM Rational Functional Tester. 其它著名的,易于使用的开源工具解决用户接口自动化问题的有Selenium,也能够记录测试,需要的时候回放。市场上还有来自Microsoft的也能不需要太多努力做同样的事。用Visual Studio Microsoft还有Coded UI的方案用于单元测试。

Coded UI适合在哪儿用?

大多数安装了Visual Studio的开发者都喜欢在Visual Studio的环境里进行单元测试,而不是使用第三方工具。由微软提供的Coded UI,在Visual Studio环境里可谓上手即用。在开发者的机器上无需另外安装任何东西。一旦你安装了Visual Studio的Premium版或者Ultimate版,你就同时也安装好了Coded UI。

Coded UI可用性

为了使用Coded UI,需要安装Visual Studio 2010/2012/2013的Premium版或者Ultimate版。

Coded UI 测试的组成

Coded UI 测试的组成容易理解。它可分成下列文件:

UIMap.uitest

这个文件是UIMap类的XML表示。UIMap类包括视窗,控件,属性,方法,断言和动作。

UIMap.cs

对UIMap的自定义部分都存在这文件里。如果修改直接存在UIMap.designer.vb文件的话,那些修改都会在记录结束后丢失,因为这个文件重新创建了。

给每个在测应用程序中的每个模块创建一个独立的UIMap文件。

UIMap.Designer.cs

这是部分类表达各种类。这各种类是给多样的控件和他们的范围,属性,方法的类。

提示:不要直接修改 UIMap.Designer.cs。加入你这样做,这个修改会被覆盖掉。

CodedUITest.cs

这类表示的实际的CodeUI测试类,方法调用,和断言调用,所有的方法和断言默认都是从UIMap.Designer.cs文件调用的。这类有具有【codedUITest]属性TestClass和包含具有【TestMethod]属性的多种方法。

Coded UI的特性/好处

进行用户界面测试的同时进行校验.

生成VB.Net/C#代码.

测试用例可以被记录和重放.

集成了ALM Story

能够作为每日构建的一部分来运行.

根据需要进行高级扩展.

和Visual Studio集成在一起,所以无需单独购买许可.

Coded UI对Web和Windows应用同样适用.

著名的Microsoft支持.

创建Coded UI测试

Coded UI测试可以用下列方式创建

使用MTM进行快速自动构建

从现有的记录(从手动测试中记录下来的 *** 作)中创建Coded UI

在Coded UI Test Builder创建的底稿的基础上创建一个新的Coded UI测试.

自己写Coded UI.

这个白皮书的范围仅限于“在Coded UI Test Builder创建的底稿之上创建一个新的Coded UI测试”。

小贴士: 尽量使用Coded UI Test Builder。

Coded UI Test Builder

每一个Coded UI测试的生成都需要遵从下列步骤.

记录/停止/暂停

编辑记录下来的步骤

添加断言

生成代码

创建Coded UI 测试

创建新的Coded UI 项目

要开始使用Coded UI,首先我们需要创建一个测试项目,用来保存所有Coded UI测试。创建一个新的Coded UI项目包含下列步骤

打开Visual Studio 2012

选择 File >New >Project

选择需要的语言模板 (C# or VB.Net). 我们选择了C#.

选择Coded UI Project

输入一个名字

点击 OK 按钮

添加 Coded UI 测试

Visual Studio默认配置为创建Coded UI 测试使用 "Generate a new Coded UI Test from scratch using Coded UI Test Builder"

提示:在测试的应用程序中,当你创建UI控件时尽量使用有意义的名称,从而对于自动生成的控件显得更加有意义和可用。

一旦 Coded UI 测试工程创建完成,将会自动打开生成Coded UI 测试代码的对话框,请给出以下选项的设置。

记录 *** 作,编辑UI地图或添加断言

使用一个已经存在的 *** 作记录

默认情况下 选择记录 *** 作,编辑UI地图或添加断言,无需做任何 *** 作,然后点击 "ok"

Coded UI Test Builder

选择了上述选项后,Coded UI Test Builder就会被打开,同时Visual Studio窗口被最小化。这意味着我们已经为记录 *** 作做好了准备。

正如之前描述的,Coded UI Test Builder基于下列4个 *** 作来做记录

Record Steps

Update or Delete Steps

Verify Results (Add Assertions)

Generate Code

小贴士: 如果用户界面(UI)变化了,就重新记录测试方法或断言方法,或者重新记录一个既有测试方法中受影响的部分。

记录一个序列的 *** 作.

记录一个 *** 作主要需要下列几步.

Start Recording, 通过选择Record按钮即可.

Pause Recording, 用来处理记录过程中的其它 *** 作,即Generate Code.

Edit/Delete *** 作, 以防错误的 *** 作被记录。

Generate code为记录下来的 *** 作创建编号。会给每一个记录下来的 *** 作都生成编号。

Add Assertions 用来校验结果。

小贴士: 创建断言最好使用Coded UI Test Builder,因为它会在UIMap.Designer.cs文件中自动添加一个断言方法。

为记录动作做计划

任何事情的成功都取决于它计划得有多好。较好地计划最大限度保证了任务成功完成。这样总是比较好,在开始记录动作之前,我们计划好所有的所有要计划的步骤。

这里我们将要使用应用程序Windows计算器来记录步骤。我们要自动地加和减两个数字。在记录加和减两个数字的时候,下面的步骤将会用到。

。点击“开始记录”控件

。到开始,点击执行

。在执行窗口,输入”calc"

。停止记录,看记录的步骤

。删除错误的步骤(存在的话)

。产生代码;提供和动作相匹配的名字。比如,打开计算器。

提示:当你产生一个方法时候,使用一个有意义的方法的名字,代替默认名字。

有意义的名字帮助识别方法的木的。

。重新记录,提供第一个数字,暂停记录产生代码

。重新记录,提供 *** 作(加或者减),暂停记录,产生代码

。重新记录,提供第二个数字,暂停记录,产生代码。

。加断言

提示: 产生你的测试作为一系列记录的方法

提示: 可以的时候,限制每个方法小于10个动作。这模块化的方法让UI改变时候容易替换方法。

我们已经看到了Coded UI可以使开发者的生活变得多么轻松,尤其是遇到每次都需要进行很多输入的复杂页面的时候。这时,测试用例只需要被记录一次,就可以按照需要执行任意多次。使用Coded UI比使用其它工具的好处是,它能自动适配Web页面和Windows窗口应用。Coded UI测试可以用Visual Studio 2010来运行,也可以用任何版本的VS来运行,它们的功能正变得越来越强大。无需多说,Coded UI是一个由技术领导者提供的强大工具,想要体验Coded UI测试的强大,我们应该开始在项目中使用它看看它能带来多少ROI,我确信Coded UI不会让你失望。

转载


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11905589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存