0

我試圖設置類似於Postman中環境/全局變量的東西。 Postman將這些變量存儲在JSON中,並且當您在測試中修改它們時,它們將永久更改爲新值。例如:量角器持久變量

postman.setEnvironmentVariable("variable1", parseInt(postman.getEnvironmentVariable) +1); 

該功能將在請求的開始遞增1的環境變量。在我真正的郵差測試中,我使用自定義函數根據以前使用的條碼計算有效的EAN13條碼,因爲它們必須是唯一的。

有沒有這樣的東西可以在量角器中實現?

回答

0

我發現了一個優雅的解決方案。導入我的params在一個JSON對象,象下面這樣:

global.DATA_PATH = './data/environment.json'; 
global.fs = require(fs); 
exports.config = { 
    ... 
    params: { 
     data = require(global.DATA_PATH) 
    } 
    ... 
}; 

然後在我的JSON對象,我會定義數據像這樣:

{ 
    "variable1": "blah" 
} 

現在我可以通過正常的對象點符號訪問我的數據在我的代碼:

this.modifyVariable1 = function(value) { 
    params.data.variable1 = value; 
} 

由於這只是修改了參數變量params.data.variable1,我通過使用模塊的NodeJS與文件同步,它10 afterAll

afterAll(function() { 
    global.fs.writeFile(global.DATA_PATH, (JSON.stringify(params.data), null, 4), 'utf8); 
}); 

這隻需要在規範做是因爲更改params對象堅持通過每個it語句運行。

希望這可以幫助那些想嘗試類似的人!

1

使用'params'對象存儲數據。你可以在配置文件中設置它。 config

params: { 
     login: { 
     user: 'Jane', 
     password: '1234' 
     } 
    } 

從像browser.params.login瀏覽器對象訪問。您可以更改可以在另一個測試中檢索的對象的值。

+0

但是,一旦所有測試運行,參數是否會重置回原來的狀態?這是行不通的,因爲EAN13條碼突然不再是唯一的了,我必須推斷每次運行測試時使用哪個條碼。 – esiroky

+0

你是對的,測試完成後它不會持續。 process.env.some變量也不會使這永久。如何將這個值存儲在文件中? – Grasshopper

+0

我確實想到了這一點,但我無法找到任何方式以任何方式做到這一點。我應該定義一個沒有實際意義的全局變量,然後定義一個輔助函數並在Jasmine的beforeEach或afterEach函數中調用它? – esiroky