Postman使用手册4——API test
2021-02-03 12:14
标签:ima log box meta 简单 转换 new domain main Postman v0.10+ 版本支持pre-request scripts。 pre-request scripts是一个关联了收藏夹内request,并且在发送request之前执行的代码片段。这对于在request header中包含时间戳或者在URL参数中发送一个随机字符串都是非常有用的。 例如:如果要在request的header中包含一个时间戳,你可以设置一个环境变量由一个函数返回他的值。 你可以在header中使 timestampHeader 变量,当request发送的时候,你的pre-request script将被执行,这个timestampHeader 变量的值将会替换{{timestampHeader}}。 注意:我们设置的环境对使用的环境变量必须是有效的。 ![Uploading prerequest script_871640.png . . .] Postman给了你一个环境让你能够为每个request编写、执行你的test,而不用担心任何额外的设置。 一个Postman的test本质上是JavaScript的代码可以用来为一些特殊的test设置值。你可以在对象中设置一个描述性的键作为一个元素,然后声明他如果是true或false。 这回核对body中是否包含了user_id这个字符串。如果你需要,你可以增加更多的键,这取决于你要用test做多少的事情。 test被保存为收藏夹request的一部分,这对于后端或前端的工程师来确保API运行的正常都是非常有意义的。 在写test的时候这里有些事情需要注意,Postman尝试使得列出常用的片段更简单。你可以选择你想添加的片段,然后适当的代码将被添加到test的编辑器中。这是一个很好的方法来快速的构建test Postman在你执行一个request的时候执行test,当然你可以选择不考虑test。结果被显示在一个tab里,并在头部显示多少test通过了测试。你设置在test中的变量将会被列在这里。如果值是true,这个test就会通过。你可以保持test tab活动直到你确保所有的test执行完。 Postman的sandbox是一个JavaScript的执行环境,这使得你能够为request写pre-request scripts和test scripts 。不论你写的代码是pre-request scripts还是test script都会在sandbox中执行。 Lodash: jQuery (Deprecated): BackboneJS (Deprecated): SugarJS: tv4 JSON schema validator: CryptoJS: Postman也有一些动态变量,你可以用在你的request中。这个现在主要还是在实现阶段,更多的功能以后被被添加进来。注意:动态变量不可以用于SandBox中,你只能在request的URL、headers、body中以放在双花括号中间的形式使用。 {{$guid}}: Adds a v4 style guid {{$timestamp}}: Adds the current timestamp. {{$randomInt}}: Adds a random integer between 0 and 1000 + responseCookies {array} (Postman-only): request {object}: data {object}: headers {object}: method {string}: url {string}: responseHeaders {object}(Test-only)(Deprecated): responseBody {string}(Test-only): responseTime {number}(Test-only): responseCode {object}(Test-only): code {number}: name {string}: detail {string}: tests {object}(Test-only): iteration {number}: (Test-only): This object is only available in the test script section. Using this in a pre-request script will throw an error. 我们来看一些Postman用于test的例子。这些例子中的大多数在Postman中是有效的,他们像一行JavaScript语句一样简答。在你的request中你可以有很多的test。 注意:test脚本在从服务器收到response后执行一、Pre Request Scripts
postman.setEnvironmentVariable(‘timestampHeader‘,new Date());
二、Writing Tests
1.基本结构
tests[“Body contains user_id”] = responseBody.has(“user_id”)
2.SNIPPETS
3.查看结果
三、Testing Sandbox
1.常用的库和工具
JS utility library
Cross-platform JavaScript library. This will be removed in future versions of the sandbox.
Provides simple models, views, and collections. This will be removed in future versions of the sandbox.
Extends native JS objects with useful methods
Validates JSON objects against v4 of the json-schema draft
standard and secure cryptographic algorithms. Supported algorithms: AES, DES, EvpKDF, HMAC-MD5, HMAC-SHA1/3/256/512, MD5, PBKDF2, Rabbit, SHA1/3/224/256/512, TripleDESxml2Json(xmlString)
:
This function behaves the same in Newman and PostmanxmlToJson(xmlString)
(Deprecated):
This function does NOT behave the same in Newman and Postmanpostman.getResponseHeader(headerName)
(Test-only):
returns the response header with name "headerName", if it exists. Returns null if no such header exists. Note: According to W3C specifications, header names are case-insensitive. This method takes care of this.
postman.getResponseHeader("Content-type") and postman.getResponseHeader("content-Type") will return the same value.2.环境和全局变量
postman.setEnvironmentVariable(variableName, variableValue)
: Sets an environment variable "variableName", and assigns the string "variableValue" to it. You must have an environment selected for this method to work. Note: Only strings can be stored. Storing other types of data will result in unexpected behavior.postman.setGlobalVariable(variableName, variableValue)
:
Sets a global variable "variableName", and assigns the string "variableValue" to it. Note: Only strings can be stored. Storing other types of data will result in unexpected behavior.postman.clearEnvironmentVariable(variableName)
:
Clears the environment variable named "variableName". You must have an environment selected for this method to work.postman.clearGlobalVariable(variableName)
:
Clears the global variable named "variableName".postman.clearEnvironmentVariables()
:
Clears all environment variables. You must have an environment selected for this method to work.postman.clearGlobalVariables()
:
Clears all global variables.environment
:
A dictionary of variables in the current environment. Use environment["foo"]
to access the value of the "foo" environment variable.globals
:
A dictionary of global variables. Useglobals["bar"]
to access the value of the "bar" global variable.3.动态变量
4. Cookies
Gets all cookies set for the domain. You will need to enable the Interceptor for this to work.
Gets the response cookie with the given name. You will need to enable the interceptor for this to work. Check out the blog post.5.Request/response相关属性
Postman makes the request object available to you while writing scripts. This object is read-only. Changing properties of this object will have no effect. Note: Variables will NOT be resolved in the request object. The request object is composed of the following:
this is a dictionary of form data for the request. (request.data["key"]=="value")
this is a dictionary of headers for the request (request.headers["key"]=="value")
GET/POST/PUT etc.
the url for the request.
This is a map of the response headers. This is case-sensitive, and should not be used. Check thepostman.getResponseHeader()
method listed above.
A string containing the raw response body text. You can use this as an input to JSON.parse, or xml2Json.
The response time in milliseconds
Contains three properties:
The response code (200 for OK, 404 for Not Found etc)
The status code text
An explanation of the response code
This object is for you to populate. Postman will treat each property of this object as a boolean test.
Only available in the Collection Runner and Newman. Represents the current test run index. Starts from 0.四、Testing 实例
1.设置环境变量:
postman.setEnvironmentVariable("key", "value");
2.设置全局变量:
postman.setGlobalVariable("key", "value");
3.检查response的body中是否包含字符串:
tests["Body matches string"] = responseBody.has("string_you_want_to_search");
4.把XML的body转换成JSON对象:
var jsonObject = xml2Json(responseBody);
5.检查response的body是都为一个字符串:
tests["Body is correct"] = responseBody === "response_body_string";
6.检查JSON的值:
7.内容类型存在(检查不区分大小写)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //Note: the getResponseHeader() method returns the header value, if it exists.
8.内容类型存在(区分大小写):
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
9.response的响应时间小于200ms:
tests["Response time is less than 200ms"] = responseTime 200;
10.状态码为200:
tests["Status code is 200"] = responseCode.code === 200;
11.Code name contains a string:
tests["Status code name has string"] = responseCode.name.has("Created");
12.成功的POST request状态码:
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
13.Use TinyValidator for JSON data
-
var schema = {
-
"items": {
-
"type": "boolean"
-
}
-
};
-
var data1 = [true, false];
-
var data2 = [true, 123];
-
-
console.log(tv4.error);
-
tests["Valid Data1"] = tv4.validate(data1, schema);
-
tests["Valid Data2"] = tv4.validate(data2, schema);
14.Sample data files
JSON files are composed of key/value pairs:
Download JSON file
For CSV files, the top row needs to contain variable names
Download CSV file
Postman使用手册4——API test
标签:ima log box meta 简单 转换 new domain main
原文地址:https://www.cnblogs.com/QaStudy/p/11514969.html
文章标题:Postman使用手册4——API test
文章链接:http://soscw.com/index.php/essay/50411.html