当我通过 Jasmine-Data-Provider 传递四个数据集时,如何将断言应用于具有多个数据集的单个测试用例
How assertion will be applied on single Testcase with multiple DataSet as I am passing four DataSet through Jasmine-Data-Provider
我有一个登录测试用例,其中我通过 Jasmine-Data-Provider 传递了 4 种类型的测试数据。我想在单个 TC 中应用断言。我该怎么做?
我的规范文件是 login.ts
describe("Test", () => {
using(hardshipTestData.scenarios, (alldata: any, alldesc: any) => {
it("TC", () => {
browser.get("url link");
browser.element(by.id("UserID")).sendKeys(alldata.username);
browser.element(by.id("Password")).sendKeys(alldata.password);
browser.element(by.className("k-button")).click();
})
})
})
我的数据文件是 data.ts
export const hardshipTestData =
{
scenarios:
{
Wrongusername: { username: 'abc', password: 'ab' },
Wrongpassword: { username: 'xyz', password: 'ab' },
blankCreds: { username: '', password: '' },
CorrectCreds: { username: 'username12', password: 'password12' }
}, }
现在我想应用断言,以便我可以用所有四个数据集验证我的测试用例。
例子
- 如果 correctCreds 在 TC 中通过,那么测试应该通过。
- 如果我传递的是错误的用户名,那么在这种情况下将不允许用户登录,测试将通过。
我该怎么做?
我会将预期结果作为数据的一部分,然后使用它来执行您的断言。
数据文件
export const hardshipTestData =
{
scenarios:
{
Wrongusername: { username: 'abc', password: 'ab', loggedIn: false },
Wrongpassword: { username: 'xyz', password: 'ab', loggedIn: false},
blankCreds: { username: '', password: '', loggedIn: false },
CorrectCreds: { username: 'username12', password: 'password12', loggedIn: true }
}, }
然后创建一个 return true 用户成功登录的函数,并像这样对其执行断言。
it("TC", () => {
browser.get("url link");
browser.element(by.id("UserID")).sendKeys(alldata.username);
browser.element(by.id("Password")).sendKeys(alldata.password);
browser.element(by.className("k-button")).click();
expect(isLoggedIn()).toBe(alldata.loggedIn);
})
这被解决为:
export const hardshipTestData =
{
scenarios:
{
Wrongusername: { whichCreds : 'Wrongusername', username: 'abc', password: 'ab' , message: 'Invalid'},
Wrongpassword: { whichCreds : 'Wrongpassword',username: 'xyz', password: 'ab', message: 'Invalid' },
blankCreds: { whichCreds : 'blankCreds', username: '', password: '' ,message: 'required'},
CorrectCreds: { whichCreds : 'CorrectCreds', username: 'username12', password: 'password12', message: 'Home' }
}, }
这里我也把我的预期结果写在了变量"message"里,然后传给"WhichCreds"做进一步的条件
我的TestCase.ts
let login = new LoginElement();
describe("Test", () => {
using(hardshipTestData.scenarios, (alldata: any, alldesc: any) => {
it("TC", () => {
browser.get("url link");
browser.element(by.id("UserID")).sendKeys(alldata.username);
browser.element(by.id("Password")).sendKeys(alldata.password);
browser.element(by.className("k-button")).click();
expect(login.LoginStatus(alldata.whichCreds)).toContain((alldata.message).trim());
})
})
})
我的LoginElement.ts文件
public LoginStatus(whichCreds : any)
{
switch(whichCreds) {
case "Wrongusername": {
return (browser.element(by.id("LoginFailure"))).getText();
break;
}
case "Wrongpassword": {
return (browser.element(by.id("PasswordFailure"))).getText();
break;
}
case "blankCreds": {
return (browser.element(by.class("Blank_field"))).getText();
break;
}
case "CorrectCreds": {
return browser.getCurrentUrl();
break;
}
default: {
break;
} } }
我有一个登录测试用例,其中我通过 Jasmine-Data-Provider 传递了 4 种类型的测试数据。我想在单个 TC 中应用断言。我该怎么做?
我的规范文件是 login.ts
describe("Test", () => {
using(hardshipTestData.scenarios, (alldata: any, alldesc: any) => {
it("TC", () => {
browser.get("url link");
browser.element(by.id("UserID")).sendKeys(alldata.username);
browser.element(by.id("Password")).sendKeys(alldata.password);
browser.element(by.className("k-button")).click();
})
})
})
我的数据文件是 data.ts
export const hardshipTestData =
{
scenarios:
{
Wrongusername: { username: 'abc', password: 'ab' },
Wrongpassword: { username: 'xyz', password: 'ab' },
blankCreds: { username: '', password: '' },
CorrectCreds: { username: 'username12', password: 'password12' }
}, }
现在我想应用断言,以便我可以用所有四个数据集验证我的测试用例。
例子
- 如果 correctCreds 在 TC 中通过,那么测试应该通过。
- 如果我传递的是错误的用户名,那么在这种情况下将不允许用户登录,测试将通过。
我该怎么做?
我会将预期结果作为数据的一部分,然后使用它来执行您的断言。
数据文件
export const hardshipTestData =
{
scenarios:
{
Wrongusername: { username: 'abc', password: 'ab', loggedIn: false },
Wrongpassword: { username: 'xyz', password: 'ab', loggedIn: false},
blankCreds: { username: '', password: '', loggedIn: false },
CorrectCreds: { username: 'username12', password: 'password12', loggedIn: true }
}, }
然后创建一个 return true 用户成功登录的函数,并像这样对其执行断言。
it("TC", () => {
browser.get("url link");
browser.element(by.id("UserID")).sendKeys(alldata.username);
browser.element(by.id("Password")).sendKeys(alldata.password);
browser.element(by.className("k-button")).click();
expect(isLoggedIn()).toBe(alldata.loggedIn);
})
这被解决为:
export const hardshipTestData =
{
scenarios:
{
Wrongusername: { whichCreds : 'Wrongusername', username: 'abc', password: 'ab' , message: 'Invalid'},
Wrongpassword: { whichCreds : 'Wrongpassword',username: 'xyz', password: 'ab', message: 'Invalid' },
blankCreds: { whichCreds : 'blankCreds', username: '', password: '' ,message: 'required'},
CorrectCreds: { whichCreds : 'CorrectCreds', username: 'username12', password: 'password12', message: 'Home' }
}, }
这里我也把我的预期结果写在了变量"message"里,然后传给"WhichCreds"做进一步的条件
我的TestCase.ts
let login = new LoginElement();
describe("Test", () => {
using(hardshipTestData.scenarios, (alldata: any, alldesc: any) => {
it("TC", () => {
browser.get("url link");
browser.element(by.id("UserID")).sendKeys(alldata.username);
browser.element(by.id("Password")).sendKeys(alldata.password);
browser.element(by.className("k-button")).click();
expect(login.LoginStatus(alldata.whichCreds)).toContain((alldata.message).trim());
})
})
})
我的LoginElement.ts文件
public LoginStatus(whichCreds : any)
{
switch(whichCreds) {
case "Wrongusername": {
return (browser.element(by.id("LoginFailure"))).getText();
break;
}
case "Wrongpassword": {
return (browser.element(by.id("PasswordFailure"))).getText();
break;
}
case "blankCreds": {
return (browser.element(by.class("Blank_field"))).getText();
break;
}
case "CorrectCreds": {
return browser.getCurrentUrl();
break;
}
default: {
break;
} } }