当我通过 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' }

  }, }

现在我想应用断言,以便我可以用所有四个数据集验证我的测试用例。

例子

  1. 如果 correctCreds 在 TC 中通过,那么测试应该通过。
  2. 如果我传递的是错误的用户名,那么在这种情况下将不允许用户登录,测试将通过。

我该怎么做?

我会将预期结果作为数据的一部分,然后使用它来执行您的断言。

数据文件

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; 
            } } }