我們有一個REST服務,有一個接收資料的REST端點。它沒有Web界面(Swagger或其他),只有API。使用 Postman,我可以向它發送一個 JSON 檔案(回應代碼為 202),然后從另一個端點讀取上傳的資料。
當我想用Cypress登錄同一個端點,從fixtures檔案夾中上傳一個JSON檔案(與Postman請求中的主體相同)時,我得到的回應代碼是401--未經授權。我覺得Cypress請求是錯誤的,因為當我使用Cypress POST時,服務的日志檔案沒有寫訊息,但當我使用Postman POST時,它卻寫了。
第一個問題。我在Cypress請求中可能做錯了什么?
第二個問題。一旦認證成功,我怎樣才能將 JSON 檔案的內容 POST/upload/push 到該端點?因為我沒有網頁可以互動,所以我不能使用點擊按鈕功能。檔案主要涉及解釋JSON回應,但沒有涉及發送。
我的Cypress代碼:
it('logs in to connector through REST API', () => {
cy.request({
方法。'POST'。
網址。'localhost:8095/connector/demands/v1/demandData'。
failOnStatusCode:false。
形式。true。
body: {
用戶名。'user',
密碼。'pass',
}
})
})
import my-request from ' ./fixtures/my-request.json'
it('加載JSON檔案', () => {
cy.fixture('my-request.json')
})
要上傳的JSON檔案的結構不是太簡單,這里是一個簡短的版本:
{}。
"@metadata": {
"context": "{{A}}"
},
"pool": "{{B}}",
"action": "new",
"型別": "ANNOUNCEMENT",
"ON": "Order123",
"PON": "PO123",
"SNN": "SN123"、
"方向": "OUT",
"模式": 3,
"pack": []。
{
"out": {
"outKey": "OUT14" ,
"outQuantity": "3",
"尺寸": {
"長度": "303",
"width": "33",
"高度": "903",
"單位": "mm"/span>
},
"層": "3",
"weight": "3000"、
"weightUnit": "grm",
"in": []。
{>
"inKey": "IN12",
"inQuantity": "3",
"文章": {
"articleKey": "article3" ,
"數量": "300",
"PON": "Art_PO300",
"SNN": "Art_SN300"/span>
}
}
]
},
"p1": "pack3",
"p2": "pack4",
"store": true
},
{>
"out": {
"outKey": "OUT23" ,
"outQuantity": "5",
"尺寸": {
"長度": "505",
"width": "55",
"高度": "905",
"單位": "mm"/span>
},
"層": "5",
"weight": "5000",
"weightUnit": "grm",
"in": []。
{>
"inKey": "IN19",
"inQuantity": "5",
"article": {}。
"articleKey": "article5" ,
"數量": "500",
"PON": "Art_PO500",
"SNN": "Art_SN500"/span>
}
}
]
},
"p1": "pack5",
"p2": "pack5",
"store": true
}
]
}
uj5u.com熱心網友回復:
找到了解決方案。不能給 "form: true",因為它覆寫了內容型別。
uj5u.com熱心網友回復:
你可以像這樣在請求體中傳遞夾具檔案的內容(是json):
describe('Some Test Suite'/span>, function() {
//我們可以使用這些值來登錄。
const username = 'jane.lane'
const password = 'password123' >。
it('logs in to connector through REST API', ( ) => {
cy.fixture('my-request.json').then(myFixture => {
cy.request({
method: 'POST'。
url: 'localhost:8095/connector/demands/v1/demandData'。
auth: {
用戶名。
密碼。
},
failOnStatusCode: false,
form: true,
body: myFixture
})
})
})
})
對于HTTP auth,你必須使用。你可以查看這個cypress recipe.
。span class="hljs-attr">auth: {
用戶名。
密碼。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/320468.html
標籤:
上一篇:訪問一個要洗掉的元素屬性
