15 days of Postman - for testers Day 01
之前看postman日志的时候,发现了这个挑战.之前一直用,但是没有仔细研究过.
有了一个系统的培训还是值得参与一下.
所以,就走起吧~
只能说年前不忙
Day 01 : API client
开始之前可以通过测试感受一下自己的水平
Postman Skills
Recommended Postman skills for testers
具体的操作流程并不复杂,我是推荐按照文档一步一步操作一下,最麻烦的其实是看不明白英文文档....翻译容易带上关键字一起翻译有一些诡异,中英文对比着看还行.
看到他的test验证非常能帮助我理解一些平时不知道该怎么写的case,笔记一下
有几个有意思的,哈哈哈
我是非常推荐使用cURL的,跟研发经常互相扔cURL导入postman查看问题,方便快捷.

let的使用/js的格式
变量的声明基本都用的是let.看了一下文档,作用域不一样,还没太整明白.
人家一丢丢都没有写...而我,java基本语法200年学习者,分号和空格是我最后的倔强
调用其他脚本
let folder = collection.item.find(fol => {return fol.name === "API client"})
pm.test("Request body updated", () => {
let request = folder.item.find(req => {return req.name === "echo"})
pm.expect(request.request.body.raw, 'check payload').does.not.include("hello world!")
pass += 1
})
先声明了这个collection里的文件夹
通过 requset调用,找文件夹中这个脚本.
对工作空间/collections/文件夹/脚本属性的检查
一般肯定用不上,但是可以作为平台日常检查,万一有手欠的呢.....还有就是互相调用万一谁手欠改名字,也可以拯救一下.
// 代码没啥逻辑关系,堆砌
let workspace = pm.response.json().workspace
let name = workspace.name.toLowerCase()
pm.expect(workspace.visibility).equals("public")
let collection = pm.response.json().collection
pm.expect(collection.info.name).equals("Day 01: API client")
可视化结果
可视化的结果,非常可爱.通过"pm.visualizer.set(template)"
// visualization for test results
let template
if (pass == totalToPass) {
template = ` passing!
<br />
<img src="https://media1.giphy.com/media/Dkf37ayTUExQ4/giphy.gif?cid=ecf05e4742btni80eyov8aqcpjhvc4hyxc36covy0r33xvy0&rid=giphy.gif&ct=g" />
`
} else {
template = ` please try again
<br />
<img src="https://media3.giphy.com/media/fqst7AVqF6AVLlYklE/giphy.gif?cid=ecf05e47mv96rgygl6w4fenzomwqqeh17p5pvcsgenuyxsbo&rid=giphy.gif&ct=g" />
`
}
pm.visualizer.set(template)
当你的结果全部通过的时候[目前发现case的图还不一样,好可爱

如果你有失败的时候

非常可爱...虽然我一般用不上....
第一个case代码见下
// counter for passed tests
let pass = 0
let totalToPass = 5
let collection = pm.response.json().collection
pm.test("If you have any failures, review the failed test results or ask for support in the community forum. Remember to save your changes if you update the collection.", () => {
pm.expect(true);
pass += 1
});
pm.test("Status code is 200", () => {
pm.response.to.have.status(200);
pass += 1
});
pm.test("Correct collection returned", () => {
pm.expect(collection.info.name).equals("Day 01: API client")
pass += 1
})
let folder = collection.item.find(fol => {return fol.name === "API client"})
pm.test("Request body updated", () => {
let request = folder.item.find(req => {return req.name === "echo"})
pm.expect(request.request.body.raw, 'check payload').does.not.include("hello world!")
pass += 1
})
pm.test("API key secure", () => {
let apiKey = collection.variable.find(item => { return item.key === "postman_api_key"})
pm.expect(apiKey.value, 'API key visible under Initial value').does.not.include("PMAK")
pass += 1
})
// visualization for test results
let template
if (pass == totalToPass) {
template = ` passing!
<br />
<img src="https://media1.giphy.com/media/Dkf37ayTUExQ4/giphy.gif?cid=ecf05e4742btni80eyov8aqcpjhvc4hyxc36covy0r33xvy0&rid=giphy.gif&ct=g" />
`
} else {
template = ` please try again
<br />
<img src="https://media3.giphy.com/media/fqst7AVqF6AVLlYklE/giphy.gif?cid=ecf05e47mv96rgygl6w4fenzomwqqeh17p5pvcsgenuyxsbo&rid=giphy.gif&ct=g" />
`
}
pm.visualizer.set(template)
传说中的徽章
