我正在使用 TypeScript 创建 API 测试框架,但我对它还很陌生。
我创建了这个帮助文件assertions.ts
import * as chai from 'chai';
interface response {
status: number
body: object
}
const assertResponseStatusCode =
(response:response, statusCode:number) =>
chai.expect(response.status).to.deep.equals(statusCode);
const assertSuccessResponseStatusCode = (response:response) =>
assertResponseStatusCode(response, 201)
export = {assertSuccessResponseStatusCode}
Run Code Online (Sandbox Code Playgroud)
然后我开始在我的规范文件中使用它们,如下所示
import * as auth from '../Helpers/auth';
import * as assert from '../Helpers/assertions';
import { user } from '../Samples/user';
describe('login', () => {
it('should return access token with valid credentials', async() => {
const response = await auth.login(user);
console.log(response.body);
assert.assertSuccessResponseStatusCode(response);
});
}); …Run Code Online (Sandbox Code Playgroud) 我的测试用例很不稳定,因为有时测试会在元素出现在屏幕上之前与元素进行交互,而不是静态等待,我决定在cy.intercept()与元素交互之前等待触发的请求。
我首先使用带有一些路径参数的 PUT 请求进行了尝试,效果很好,并且在 cypress runner 上我看到别名正确地代表了端点
cy.intercept('PUT', `https://api.dev.myapp.com/api/program/v1/program/**`).as('saveProgram');
cy.wait('@saveProgram');
Run Code Online (Sandbox Code Playgroud)
我对需要 URL 中的查询参数的后端点尝试了同样的操作,但它不起作用。在运行程序中,我看不到分配给端点的别名,如下面的屏幕截图所示。
cy.intercept('POST', `https://api.dev.myapp.com/api/program/v1/program?clientId=*`)
.as('createProgram');
cy.wait('@createProgram');
Run Code Online (Sandbox Code Playgroud)
我正在 dockerized 容器内的 Jenkins 上运行 cypress 测试,并生成 cypress mocha 很棒的报告,但我不知道如何在 Jenkins 内显示它。
这是我的cypress.json内容
{
"integrationFolder": "test/specs",
"supportFile": "test/support/index.js",
"video": true,
"reporter": "node_modules/cypress-multi-reporters",
"reporterOptions": {
"reporterEnabled": "mochawesome",
"mochawesomeReporterOptions": {
"reportDir": "results/mocha",
"overwrite": false,
"html": false,
"json": true,
"timestamp": "mmddyyyy_HHMMss",
"showSkipped": true,
"charts": true,
"quite": true,
"embeddedScreenshots": true
}
},
"screenshotOnRunFailure": true,
"screenshotsFolder": "results/mochareports/assets/screenshots",
"videosFolder": "results/mochareports/assets/videos",
"baseUrl": "http://testurl.com",
"viewportWidth": 1920,
"viewportHeight": 1080,
"requestTimeout": 10000,
"responseTimeout": 10000,
"defaultCommandTimeout": 10000,
"watchForFileChanges": true,
"chromeWebSecurity": false
}
Run Code Online (Sandbox Code Playgroud)
这是我在本地运行的脚本。
"clean:reports": "rm -R -f results && …Run Code Online (Sandbox Code Playgroud)