2017-03-21 1 views
0

さまざまな種類のユーザーに分度器を使ってアプリケーションをテストする必要があります。 useridは、ユーザーのタイプ(管理者またはパートナーまたはユーザー)を決定します。すべてのユーザーにとって、私はすべての主要な機能についてアプリケーションをテストする必要があります。ここで私は何をしたいですさまざまなログインIDの分度器でさまざまなテストを実行する最も良い方法

ログインユーザー1> test1の、テスト2、テスト3 .... ログアウトを実行

ログインユーザ2> test1の、テスト2、テスト3を実行します.... ログアウト

ログインユーザ3>実行TEST1、試験2、試験3 .... ログアウト

ログインユーザ4> Iシナリオをカバーするためにテストフレームワークを作成するTEST1、試験2、試験3 .... ログアウト

を実行します。私はこれを達成するための最良の方法で入力を感謝します。

答えて

0

これはいくつかの方法で実行できます。それぞれにプロとコンがあります。

最初の方法は、ユーザーリストをループすることです。

describe('your suite',() => { 
    for (let user of users) { 
    describe('test for user: ' + user.username,() => { 
     beforeAll(() => { login(user) }); 

     it('should do a test',() => { 
     // test code with user 
     }); 

     it('should do another test',() => { 
     // test code with user 
     }); 

     afterAll(() => { logout(user) }); 
    }); 
    } 
}); 

もう1つの方法は、コールバック関数を定義し、各ユーザーのテストを作成することです。

testCallback1 = function() { 
    // test code with user 
} 

testCallback2 = function() { 
    // test code with user 
} 

describe('test for user'),() => { 
    let user = users[0]; 
    beforeAll(() => { login(user) }); 
    it('should do a test', testCallback1); 
    it('should do another test', testCallback2); 
    afterAll(() => { logout(user) }); 
}); 

describe('test for user'),() => { 
    let user = users[1]; 
    beforeAll(() => { login(user) }); 
    it('should do a test', testCallback1); 
    it('should do another test', testCallback2); 
    afterAll(() => { logout(user) }); 
}); 

おそらくこれを行うより良い方法があります。これらはほんの数例です。

0

私は同様のシナリオを持っており、ここでどのように対処しています。私は分度器の設定でユーザーの配列を追加し、私はログインテストを実行するためにそれらのユーザーをループすることができます。これは基本的に、彼の答えの中でcnishinaによる最初の提案と同じ設定です。私の違いは、テストコードが1つのファイルに存在し、ユーザーとループを別のファイルで取得するコードがあることです。おそらく単純なシナリオでは過度の攻撃に見舞われるかもしれませんが、ログインテストを実行するためのユーザー(管理者、非管理者、サービスを利用するユーザー、サービスを持たないユーザーなど)がいくつかあります。私はTypeScriptを使用していますが、あなたが使用しているものならJSで同じことができます。

//in the protractor config 
params: { 
    loginUsers: [ 
     "[email protected]", 
     "[email protected]", 
     "[email protected]", 
     //and so on ... 
    ] 
} 

それから私は私のログインテストはshared-login.tests.ts

export default class SharedLoginTests { 
    public static sharedSetup(url: string): void { 
     beforeEach(() => { 
      //shared setup code ... 
     } 

     afterEach(() => { 
      //shared tear down code ... 
     } 
    } 

    public static executeSharedLoginTests(username: string): void { 
     it(`should allow ${username} to login`,() => { 
      //login test code ... 
     } 
    } 
} 

と呼ばれ、その後、私はこのようなlogin.tests.ts持って生きるファイルがあります:

import { browser } from "protractor"; 
import SharedLoginTests from "./shared-login.tests"; 

describe(testtitle,() => { 

    const users: string[] = browser.params.loginUsers; 

    SharedLoginTests.sharedSetup(browser.params.baseUrl); 

    for (const user of users) { 
     SharedLoginTests.executeSharedLoginTests(user); 
    } 
}); 
関連する問題