php做用户注册网站,女装关键词排名,做公司网站利润,沈阳品牌网站建设一、用例编写基本规范
1、 fixture 测试夹具
使用 TestCafe 编写测试用例#xff0c;必须要先使用 fixture 声明一个测试夹具#xff0c;然后在这个测试夹具下编写测试用例#xff0c;在一个编写测试用例的 js 或 ts 文件中#xff0c;可以声明多个测试夹具
fixture(测试…一、用例编写基本规范
1、 fixture 测试夹具
使用 TestCafe 编写测试用例必须要先使用 fixture 声明一个测试夹具然后在这个测试夹具下编写测试用例在一个编写测试用例的 js 或 ts 文件中可以声明多个测试夹具
fixture(测试夹具)的声明 import testcafe // 声明一个测试夹具 百度测试 fixture 登录功能测试 上面是官方文档中的 demo调用 fixture 方法声明测试夹具的时候使用的是模板字符串传参的形式对于没用过这种语法的小伙伴来说看起来不太好理解可以按下面这个使用括号调用函数的形式来写。 import testcafe // 声明一个测试夹具 新浪测试 fixture(注册功能测试)fixture.page 方法 通过 fixture.page 方法我们可以在测试夹具打开一个要进行测试的页面 fixture(百度登录测试).page(https://www.baidu.com);
2、test 测试函数
2.1、测试用例编写 声明了测试夹具之后就可以定义测试用例了在testcafe中写测试用例直接调用测试函数test 并传递一个内部带有测试代码的函数即可 。import testcafe
// 在测试夹具中打开百度页面
fixture(百度案例).page(https://www.baidu.com);// 第一条用例百度输入 学习点击搜索
test(用例1, async t {await t.typeText(#kw, 学习).click(#su);
});// 第二条用例百度输入 python 点击搜索
test(用例2, async t {await t.typeText(#kw, python).click(#su);
});关于上面测试函数 test 调用的说明 test 方法的第一个参数为测试用例的名称第二个参数是写测试代码的函数 关于参数 t 在 testcafe 中 所有测试动作都需要使用 测试控制器对象的异步功能来实现。箭头函数定义的参数 t 就是用来接收测试控制器对象的。 上面写测试代码的函数是使用 async/await 语法定义的函数这也是 testcafe 的推荐写法在执行相关测试动作时如果要等待前一个动作执行完成再调用下一个动作或动作链只需要进行等待的动作前面加上关键字 await 即可。
2.2、指定测试开始页面
在 fixture 中可以通过 page 方法去打开一个测试的初始页面当然在 test 方法中如果不用 fixture 打开的初始页面也可以使用 tes.page 自定义一个测试初始打开页面如下 fixture(百度案例).page https://www.taobao.com;test.page(https://www.baidu.com)(百度搜索功能, async t {await t.typeText(#kw, hao123).click(#su);
});二、测试前后置处理
在工作中执行测试时大多数的用例执行都会有一些用例前置准备或者后置清理工作要去做。关于前后置处理的方法我们称之为钩子函数testcafe 提供了两种钩子一种叫测试钩子一定叫固定钩子。
1、测试钩子
测试钩子指的是每一条测试用例执行之前和执行之后会执行的钩子函数我们称之为测试钩子关于测试钩子 Testcafe 提供了如下四个方法。
fixture.beforeEach 方法
测试夹具 fixture 提供了一个 beforeEach 方法可以给该 fixture 中的每一条测试用例设置前置执行的操作。案例代码如下 import testcafefixture(百度案例).page(https://www.baidu.com)// 设置每条用例执行的前置操作.beforeEach(async t {await t.typeText(#kw, 前置步骤).click(#su)});
fixture.afterEach 方法 fixture(百度案例).page(https://www.baidu.com)// 设置每条用例执行的前置操作.beforeEach(async t {await t.typeText(#kw, 前置步骤)}).afterEach(async t {await t.typeText(#kw, 后置步骤).click(#su)});上面这两种方法可以给通过测试夹具 fixture 给该夹具下的每条用例设置前后置操作。如果某一条用例需要单独的设置前后置则需要使用 test.before 方法和 test.after 方法。
test.before 方法
给单独的用例设置前置操作 test.before(async t {await t.typeText(#kw, test设置的前置)})(百度搜索功能, async t {await t.typeText(#kw, python).click(#su);})
test.after 方法
给单独的用例设置后置操作 test.before(async t {await t.typeText(#kw, test设置的前置)})(百度搜索功能, async t {await t.typeText(#kw, python).click(#su);}).after(async t {await t.typeText(#kw, 后置方法中输入的内容).click(#su);}) 测试钩子和测试代码之间共享数据 如果需要在测试钩子和测试代码直接共享数据的话我们可以通过测试上下文t.ctx 属性来进行传递。在测试钩子中将数据保存到测试上下文中在测试方法中再去测试上下文中获取数据。具体案例如下 test.before(async t { // 在测试钩子中通过t.ctx保存数据 t.ctx.token musen123 }) (百度搜索功能, async t { // 测试钩子中通过t.ctx获取数据 console.log(t.ctx.token) })
2、夹具钩子 夹具钩子和测试钩子不同夹具钩子只会在夹具中的第一个测试开始之前和最后一个测试完成之后运行。要添加夹具钩子可以使用fixture.before和fixture.after方法来定义定义。另外在夹具钩子中无法访问测试页面也无法对测试页面进行相关操作。fixture.before 方法 fixture(百度案例)
.page(https://www.baidu.com)
.before( async ctx {// 前置夹具钩子console.log(ctx)
})fixture.after 方法 fixture(百度案例)
.page(https://www.baidu.com)
.after( async ctx {console.log(ctx)// 后置夹具钩子
});夹具钩子和测试代码之间共享数据 传递给 fixture.before 和 fixture.after 方法的钩子函数接收一个夹具上下文的参数 ctx。需要进行数据传递时我们可以在夹具钩子中把数据保存到 ctx 的属性中。在测试代码中使用 t.fixtureCtx 来获取。案例代码如下 fixture(百度案例).before(async ctx {// 夹具钩子中保存数据ctx.someProp 123;})test(Test1, async t {// 测试代码中获取数据console.log(t.fixtureCtx.someProp);
});三、跳过和选择用例
1、跳过用例 在执行测试的时候如果说有用例不想执行那么我们可以设置跳过用例执行。关于跳过用例执行testcafe中提供了fixture.skip 和test.skip方法。fixture.skip跳过整个 fixture 的用例test.skip跳过当前的测试用例 // 跳过夹具F1中所有的用例 fixture.skip(F1); test(F1--用例1, async t { }); test(F1--用例2, async t { }); fixtureF2; // 跳过这一条用例 test.skip(F2--用例1, async t { }); test(F2--用例1, async t { });
2、选择用例
另外我们也可以使用 fixture.only 和 test.only 来筛选执行需要的用例只有选择的用例或夹具运行而所有其他应被跳过
fixture.only选择执行的测试夹具test.only选择执行的测试用例 // 选择F1这个测试夹具 fixture.only(F1); test(F1--用例1, async t { }); test(F1--用例2, async t { }); fixtureF2; // 选择这一条用例 test.only(F2--用例1, async t { }); test(F2--用例1, async t { });
以上就是 testcafe 中用例编写的所有内容啦后续会持续更新 TestCafe 的相关使用文档。