我写了一些komplex量角器测试,但一切都在一个文件中。 我在它的顶部加载所有变量,如:
var userLogin = "John";
然后在代码的某个地方我一起使用它。
我需要做的是 1.将所有变量分隔为aditional文件(某些配置文件) 2.每个测试到一个文件
1-我尝试使用config.js添加所有变量,我在protractor.conf.js中需要它正确加载问题是当我在某些测试中使用任何变量时它不起作用(测试失败, “userName未定义”) 我知道有一种方法可以在每个测试脚本中查询config.file,但这在我看来并不是最好的选择。
2-我怎么知道我在上一个脚本中做了什么,如果它是独立的,例如如何知道我已经登录?
感谢。
答案 0 :(得分:5)
您可以使用多种内容。
2)我怎么知道我在最后一个脚本中做了什么,如果它是分开的,例如如何知道我已经登录?
这是beforeEach()
, afterEach()
可以提供帮助的地方:
帮助测试套件干掉任何重复的设置和拆卸代码, Jasmine提供全局beforeEach和afterEach功能。作为 name暗示,beforeEach函数在每个规范之前调用一次 在describe中运行,并且afterEach函数被调用一次 在每个规范之后。
茉莉花1还有beforeAll()
, afterAll()
available in jasmine 2或jasmine-beforeAll
第三方:
在所有规格之前,只调用一次beforeAll函数 describe运行,并在所有规范之后调用afterAll函数 完。这些功能可用于加速测试套件 昂贵的设置和拆解。
1)我尝试制作config.js,我添加所有变量,我需要 它在protractor.conf.js中正确加载问题是我使用的时候 在某些测试中,这些变量中的任何变量都不起作用(测试失败了 “userName未定义”)我知道有一种方法需要我 每个测试脚本中的config.file,但这不是最佳选择 我的眼睛。
我个人使用的一个选项是创建一个config.js
文件,其中包含您在多次测试中需要的所有可重用配置变量并且需要一次文件 - 在量角器中config - 然后将其设置为params
配置键值:
var config = require("./config.js");
exports.config = {
...
params: config,
...
};
其中config.js
,例如:
var config;
config = {
user: {
login: "user",
password: "password"
}
};
module.exports = config;
然后,在每个测试中都不需要config.js
,而是使用browser.params
。例如:
expect(browser.params.user.login).toEqual("user");
此外,如果您需要某种全局测试准备步骤,可以在onPrepare()
函数中执行此操作,请参阅Setting Up the System Under Test。执行“全局”登录步骤的示例配置可用here。
另一个快速说明:您可以拥有自定义全局定义变量(如内置browser
或protractor
),使用global
进行设置onPrepare
。例如,我已将protractor.ExpectedConditions
定义为自定义全局变量:
onPrepare: function () {
global.EC = protractor.ExpectedConditions;
}
然后,在测试中,不要求任何东西,`EC变量将在范围内可用,例如:
browser.wait(EC.invisibilityOf(scope.page.dropdown), 5000)
此外,使用"Page Object Pattern"组织测试也有助于解决可重用性和模块化问题。