Siesta 中的全局函数
Global Function in Siesta
我刚开始使用 Bryntum Siesta 和 ExtJs 进行自动化测试。
我的第一个非常简单的测试工作如我所料。
现在我遇到了 DRY-Code 的问题。
我正在尝试为登录测试编写 DRY 代码。
这里其实有两种情况:
- 使用有效数据登录
- 使用无效数据登录(密码错误 AND/OR 用户名)
在 java 中,它将与全局 variables/functions 一起使用。
我想,我以前做过类似 javascript 全局变量的事情。
但是没用。
所以我有试用功能:
var testFunction = function(){
console.log("I am a global function, and i am working!");
};
我的目标是在我的测试文件中的 t.chain() 中调用它:
{
type: LoginUsername,
target: ">>#loginviewIdemId #loginForm #pwTriggerForm #fldName",
desc: 'Type in Username',
},
function(next) {
testFunction();
next();
},
当我调用在链上方的此测试文件中创建的函数时,它确实有效。
很抱歉,如果它是一些基本的 java 脚本问题,但我很沮丧 :D
提前致谢!
您可以扩展您的测试 class 以添加实用方法并避免 DRY 违规。本指南 post 总结如下:https://www.bryntum.com/docs/siesta/#!/guide/extending_test_class
让我们创建 2 个特殊断言,它们将检查传递的数字的奇校验。通常,断言需要检查其语句并使用 {@link Siesta.Test#pass} 或 {@link Siesta.Test#fail} 方法报告结果。
Class('MyProject.MyTestClass', {
isa : Siesta.Test.ExtJS,
methods : {
isOdd : function (number, description) {
if (number % 2) {
this.pass(description);
} else {
this.fail(description, {
assertionName : 'isOdd',
got : number,
annotation : 'Need odd number'
});
}
},
isEven : function (number, description) {
if (!(number % 2)) {
this.pass(description);
} else {
this.fail(description, {
assertionName : 'isEven',
got : number,
annotation : 'Need even number'
});
}
}
}
})
失败时,请尝试提供尽可能多的有关失败的信息,并以可读的形式格式化失败消息。请参考{@link Siesta.Test#fail}
其他选项的方法文档。
要使 Harness 使用您的新测试 class,您必须通过设置 {@link Siesta.Harness#testClass} 配置来指定要使用的测试 class选项:
harness.configure({
title : 'Awesome Test Suite',
testClass : MyProject.MyTestClass,
preload : [
...
]
})
测试 class 应该在午睡-all.js 文件之后立即加载:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="__path_to_siesta__/resources/css/siesta-all.css">
<script type="text/javascript" src="__path_to_siesta__/siesta-all.js"></script>
<!-- The file with new test class -->
<script type="text/javascript" src="lib/MyTestClass.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
</body>
</html>
现在您可以在所有测试中使用自定义断言或实用方法:
describe('My test', function(t) {
var nbr = 1;
t.isEven(nbr); // Will fail
})
我刚开始使用 Bryntum Siesta 和 ExtJs 进行自动化测试。 我的第一个非常简单的测试工作如我所料。 现在我遇到了 DRY-Code 的问题。
我正在尝试为登录测试编写 DRY 代码。
这里其实有两种情况: - 使用有效数据登录 - 使用无效数据登录(密码错误 AND/OR 用户名)
在 java 中,它将与全局 variables/functions 一起使用。 我想,我以前做过类似 javascript 全局变量的事情。 但是没用。
所以我有试用功能:
var testFunction = function(){
console.log("I am a global function, and i am working!");
};
我的目标是在我的测试文件中的 t.chain() 中调用它:
{
type: LoginUsername,
target: ">>#loginviewIdemId #loginForm #pwTriggerForm #fldName",
desc: 'Type in Username',
},
function(next) {
testFunction();
next();
},
当我调用在链上方的此测试文件中创建的函数时,它确实有效。 很抱歉,如果它是一些基本的 java 脚本问题,但我很沮丧 :D
提前致谢!
您可以扩展您的测试 class 以添加实用方法并避免 DRY 违规。本指南 post 总结如下:https://www.bryntum.com/docs/siesta/#!/guide/extending_test_class
让我们创建 2 个特殊断言,它们将检查传递的数字的奇校验。通常,断言需要检查其语句并使用 {@link Siesta.Test#pass} 或 {@link Siesta.Test#fail} 方法报告结果。
Class('MyProject.MyTestClass', {
isa : Siesta.Test.ExtJS,
methods : {
isOdd : function (number, description) {
if (number % 2) {
this.pass(description);
} else {
this.fail(description, {
assertionName : 'isOdd',
got : number,
annotation : 'Need odd number'
});
}
},
isEven : function (number, description) {
if (!(number % 2)) {
this.pass(description);
} else {
this.fail(description, {
assertionName : 'isEven',
got : number,
annotation : 'Need even number'
});
}
}
}
})
失败时,请尝试提供尽可能多的有关失败的信息,并以可读的形式格式化失败消息。请参考{@link Siesta.Test#fail} 其他选项的方法文档。
要使 Harness 使用您的新测试 class,您必须通过设置 {@link Siesta.Harness#testClass} 配置来指定要使用的测试 class选项:
harness.configure({
title : 'Awesome Test Suite',
testClass : MyProject.MyTestClass,
preload : [
...
]
})
测试 class 应该在午睡-all.js 文件之后立即加载:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="__path_to_siesta__/resources/css/siesta-all.css">
<script type="text/javascript" src="__path_to_siesta__/siesta-all.js"></script>
<!-- The file with new test class -->
<script type="text/javascript" src="lib/MyTestClass.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
</body>
</html>
现在您可以在所有测试中使用自定义断言或实用方法:
describe('My test', function(t) {
var nbr = 1;
t.isEven(nbr); // Will fail
})