簡體   English   中英

如何從beforeEach函數訪問有關當前正在運行的測試用例的信息?

[英]How do I access information about the currently running test case from the beforeEach function?

使用Protractor 5.1.2和Jasmine2來描述測試用例,如何獲得在beforeEach方法中運行的當前測試用例/規范?

我想根據正在運行的測試用例進行一些不同的設置。 除了要更改設置的一點點,我不想將這些測試放在具有重復代碼的不同規范文件中。

我要尋找的示例:

...
beforeEach(() => {
  if(currentSpec/TestCase.name == "thisName") {
    // Do a particular login specific to testcase.name
  } else { 
    // Do a default login
  }
});
...

我對此的研究提出了較舊的解決方案(超過2年),這些解決方案已經過時了,似乎一直在說訪問(量角器)試圖隱藏當前正在運行的測試用例/規范。 我覺得想要為一組測試用例中的特定測試用例進行特定的設置並不是一件獨特的事情。 我可能只是使用了錯誤的搜索詞。

我不知道如何用beforeEach()做你想做的beforeEach() 但是,我認為您可以通過使用幫助程序文件來獲得相同的效果。 這將允許您設置任何規范都可以引用的通用文件,以便您可以使用一組通用功能。 要進行設置,您將:

創建一個中央文件(我稱我為util.js

const helper = function(){
    this.exampleFunction = function(num){
        return num; //insert function here
    }
    this.exampleFunction2 = function(elem){
        elem.click() //insert function here
    } 
}

在您的spec.js文件中,您將執行以下操作:

const help = require('path/to/util.js');
const util = new help();
describe('Example with util',function(){
    it('Should use util to click an element',function(){
        let elem = $('div.yourItem');
        util.exampleFunction2(elem);
    });
});

然后,您可以從任何規格文件調用這些函數。 然后,您可以將測試分離到單獨的規格文件中,但是對於相同的零件具有一套通用的功能。

另一種執行此操作而不創建單獨文件的方法是僅使用本地函數。
示例spec.js文件:

describe('Should use functions',function(){
    afterEach(function(){
        $('button.logout').click();
    )};
    it('Should run test as user 1',function(){
        $('#Username').sendKeys('User1');
        $('#Password').sendKeys('Password1');
        $('button.login).click();
        doStuff();
    )};
    it('Should run test as user 2',function(){
        $('#Username').sendKeys('User2');
        $('#Password').sendKeys('Password2');
        $('button.login').click();
        doStuff();
    )};
    function doStuff(){
        $('div.thing1').click();
        $('div.thing2').click();
    )};
)};

根據對多個注釋的描述:

describe('Test with user 1',function(){   
   beforeEach(function(){
       //login as user 1
   });
   it('Should do a thing',function(){
       //does the thing as user 1
   });
});
describe('Test with user 2',function(){
    beforeEach(function(){
        //login as user 2
    });
    it('Should do another thing',function(){
        //does the other thing as user 2
    });
});

beforeEach的全部要點是每個測試都相同

如果您想做不同的事情,則它們屬於特定的測試。

如果您希望擁有一個通用功能,該功能根據參數的不同而有所不同,請編寫一個輔助函數並從特定測試中調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM