如何在柏树中测试错误请求
How to test a bad request in cypress
我正在使用不正确的凭据测试 cypress 中的 POST 登录方法。这 returns 400 个我需要测试的错误请求。
这是我的:
describe('Login API Test - Correct user login', () => {
it('Validate the header', () => {
cy.request({
method: 'POST',
url: 'https://myrAPI',
auth: {
username: 'user@user',
password: 'user123',
},
headers: {
'Authorization': 'Basic dXNlckB1c2VyOnVzZXI=',
'Content-Type': 'text/plain'
}
}).then((response) => {
// expect(response.body).to.exist // true
// expect(response.body).('User.Access: Exception occured:User.Access : CheckUser: Exception occurred:Error with Authentication Header. result =') // true
// expect(response.headers).should.contain('text/plain; charset=utf-8')
// expect(response.body).statusCode.should.equal(400)
response.status.should.equal(400)
//expect(response).to.have.property('headers')
})
}})
发送的请求:
Method: POST
URL: https://myapi
Headers: {
"Connection": "keep-alive",
"Authorization": "Basic dXNlckB1c2VyOnVzZXIxMjM=",
"Content-Type": "text/plain",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
"accept": "*/*",
"accept-encoding": "gzip, deflate",
"content-length": 0
}
这是我得到的回复:
Status: 400 - Bad Request
Headers: {
"content-length": "239",
"content-type": "text/plain; charset=utf-8",
"request-context": "appId=cid-v1:d994e38c-9493-4dd6-ac8c-5395bb9ce790",
"date": "Tue, 02 Jul 2019 13:35:18 GMT"
}
Body: User.Access: Exception occured:User.Access : CheckUser: Exception occurred:Exception when checkin...
我想知道响应或正文中的内容
您问题的答案在错误消息中:
If you do not want status codes to cause failures pass the option: 'failOnStatusCode: false'
所以传递 failOnStatusCode: false
不会因错误的状态代码而失败:
cy.request({
method: 'POST',
url: 'https://myrAPI',
failOnStatusCode: false,
auth:
{
username: 'user@user',
password: 'user123',
},
headers:
{
'Authorization': 'Basic dXNlckB1c2VyOnVzZXI=',
'Content-Type': 'text/plain'
}
})
请添加以验证响应是否等于 400
expect(response.body).has.property("statusCode", 400);
我使用以下代码片段来明确检查状态代码:
cy.request({
url: '/url/returning/400/bad/request/status/code',
failOnStatusCode:false,
}).then((resp) => {
expect(resp.status).to.eq(400)
})
(来源cypress doc)
我正在使用不正确的凭据测试 cypress 中的 POST 登录方法。这 returns 400 个我需要测试的错误请求。
这是我的:
describe('Login API Test - Correct user login', () => {
it('Validate the header', () => {
cy.request({
method: 'POST',
url: 'https://myrAPI',
auth: {
username: 'user@user',
password: 'user123',
},
headers: {
'Authorization': 'Basic dXNlckB1c2VyOnVzZXI=',
'Content-Type': 'text/plain'
}
}).then((response) => {
// expect(response.body).to.exist // true
// expect(response.body).('User.Access: Exception occured:User.Access : CheckUser: Exception occurred:Error with Authentication Header. result =') // true
// expect(response.headers).should.contain('text/plain; charset=utf-8')
// expect(response.body).statusCode.should.equal(400)
response.status.should.equal(400)
//expect(response).to.have.property('headers')
})
}})
发送的请求:
Method: POST
URL: https://myapi
Headers: {
"Connection": "keep-alive",
"Authorization": "Basic dXNlckB1c2VyOnVzZXIxMjM=",
"Content-Type": "text/plain",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
"accept": "*/*",
"accept-encoding": "gzip, deflate",
"content-length": 0
}
这是我得到的回复:
Status: 400 - Bad Request
Headers: {
"content-length": "239",
"content-type": "text/plain; charset=utf-8",
"request-context": "appId=cid-v1:d994e38c-9493-4dd6-ac8c-5395bb9ce790",
"date": "Tue, 02 Jul 2019 13:35:18 GMT"
}
Body: User.Access: Exception occured:User.Access : CheckUser: Exception occurred:Exception when checkin...
我想知道响应或正文中的内容
您问题的答案在错误消息中:
If you do not want status codes to cause failures pass the option: 'failOnStatusCode: false'
所以传递 failOnStatusCode: false
不会因错误的状态代码而失败:
cy.request({
method: 'POST',
url: 'https://myrAPI',
failOnStatusCode: false,
auth:
{
username: 'user@user',
password: 'user123',
},
headers:
{
'Authorization': 'Basic dXNlckB1c2VyOnVzZXI=',
'Content-Type': 'text/plain'
}
})
请添加以验证响应是否等于 400 expect(response.body).has.property("statusCode", 400);
我使用以下代码片段来明确检查状态代码:
cy.request({
url: '/url/returning/400/bad/request/status/code',
failOnStatusCode:false,
}).then((resp) => {
expect(resp.status).to.eq(400)
})
(来源cypress doc)