在自动化中,我有一个要求一次测试UI和API。从UI中获取参数,并将它们传递给API并获得响应。
步骤如下:
自动化是可能的吗?
请帮我提你的建议。
发布于 2019-12-06 04:57:55
您可以使用Protractor E2E测试来这样做:
对于步骤1到步骤3,您可以使用'element selector in protractor'获取或设置任何web元素的文本。您可以在这里找到文档:https://www.protractortest.org/#/api
步骤4的:
您可以使用"http"或"request"模块对服务器进行调用。我建议api调用返回一个承诺,以便在测试中您可以使用browser.wait()函数并等待调用完成。
let apiCall = function () {
return new Promise((resolve, reject) => {
request.get(url, function (error, response, json) {
if (!error && response.statusCode == 200) {
return resolve(JSON.parse(json));
} else {
return reject(error);
}
});
});
}在你的测试中
it("validates something",()=>{
//...
browser.wait(apiCall(),timeout).then(json => {
//do stuff with json
});
// Continue with your test
}希望这能有所帮助。如果您有任何疑问,请告诉我。谢谢。
发布于 2019-12-13 18:06:08
关于e2e流道,您可以同时定义UI和Rest测试,在您的情况下,您只需要定义w测试工作流:
末端test.yaml
@test.yaml
pipeline:
init:
action: selenium:start
version: 3.4.0
port: 8085
sdk: jdk
sdkVersion: 1.8
testUI:
action: selenium:run
browser: firefox
remoteSelenium:
URL: http://127.0.0.1:8085
commands:
- get(http://UIEndpoint)
- (#searchText).clear
- (#searchText).sendKeys(my scarch criteria)
- (#run).click
- command: output = (#output).text
exit: $output.Text:/done crtieria here/
sleepTimeMs: 1000
repeat: 10
- close
expect:
output:
Text: /may validate outut here/
testREST:
action: http/runner:send
requests:
- url: 'http://RESTAPIEndpoint'
method: POST
Body: ${testUI.output.Text}
expect:
Code: 200参考文献:
https://stackoverflow.com/questions/59207055
复制相似问题