I have following code and I want to print message when I run
e.g. I want to add pm.test(“verifying json body or not”)
postman.setGlobalVariable("verifyJsonBodyOrNot", function verifyJsonBodyOrNot() {
let jsonHelpers = {};
jsonHelpers.verifyJsonBody = function verifyJsonBody(){
pm.response.to.be.withBody;
pm.response.to.be.json;
}
jsonHelpers.verifyNoJsonBody = function verifyJNosonBody(){
pm.response.to.not.be.withBody;
pm.response.to.not.be.json;
}
return jsonHelpers;
} + '; verifyJsonBodyOrNot();');
When you say print, do you mean to the console log?
The obvious way to use console.log is to show the values of variables, but you can also just show a string.
console.log("Verifying Json body or not");

Thanks for reply @mdjones .
No I don’t want to print on console. in collection it should say test ran or not. I want to create test for each jsonhelper, I was trying following code but getting error
postman.setGlobalVariable(“verifyJsonBodyOrNot”, function verifyJsonBodyOrNot() {
let jsonHelpers = {};
jsonHelpers.verifyJsonBody = pm.test("Verifying response have Json body"), function verifyJsonBody(){
pm.response.to.be.withBody;
pm.response.to.be.json;
}
jsonHelpers.verifyNoJsonBody = pm.test("Verifying response doesn't have Json body"),function verifyJNosonBody(){
pm.response.to.not.be.withBody;
pm.response.to.not.be.json;
}
return jsonHelpers;
} + ‘; verifyJsonBodyOrNot();’);
currently I am doing this way
postman.setGlobalVariable(“verifyJsonBodyOrNot”, function verifyJsonBodyOrNot() {
let jsonHelpers = {};
jsonHelpers.verifyJsonBody = function verifyJsonBody() {
tests["Verifying response have Json body"] = pm.response.to.be.withBody;
tests["Verifying response have Json"] = pm.response.to.be.json;
}
jsonHelpers.verifyNoJsonBody = pm.test("Verifying response doesn't have Json body"), function verifyJNosonBody() {
tests["Verifying response have Json body"] = pm.response.to.not.be.withBody;
tests["Verifying response have Json"] = pm.response.to.not.be.json;
}
return jsonHelpers;
} + ‘; verifyJsonBodyOrNot();’);
Sorry, I don’t quite get what you are trying to achieve.
All you are doing at the moment, is setting a global variable (which is probably not the scope you need) with the text of the code that follows (as a string).
It’s not actually doing anything else as far as I can tell.
What is it you actually want to test? That the response is JSON or not?
A quick way to do that…
var contentType = pm.response.headers.get("Content-Type");
pm.test("Is response JSON?", () => {
pm.expect(contentType).to.contain("application/json");
});`
If you want to validate the JSON schema, then this is covered in the Postman training.
Considering the following JSON. (The response to a basic request to Postman Echo).
{
"args": {
"test": "123"
},
"headers": {
"x-forwarded-proto": "https",
"x-forwarded-port": "443",
"host": "postman-echo.com",
"x-amzn-trace-id": "Root=1-633479d9-3cb2e3034e5c1f901ba6eddc",
"user-agent": "PostmanRuntime/7.29.2",
"accept": "*/*",
"postman-token": "d8b0a5d9-98d0-4dab-852c-48d57f6446b4",
"accept-encoding": "gzip, deflate, br",
"cookie": "sails.sid=s%3APz63PSoDDYaxSdy8PzrIXSpFjIjGSUzt.fVDpmspnKx0VtTF6G20Cr498EQhe0Ij7iz1ALbDdsXo"
},
"url": "https://postman-echo.com/get?test=123"
}
Then you can validate the schema using the following.
const schema = {
'type': 'object',
'properties': {
'args': {
type: 'object'
},
'headers': {
type: 'object'
},
'url': {
type: 'string'
}
},
required: ['args', 'headers', 'url']
};
const response = pm.response.json();
pm.test('Schema is valid', () => {
pm.expect(response).to.have.jsonSchema(schema);
});

Still not sure if this is actually what you are trying to achieve.
1 Like