Web 自动化神器 TestCafe(三)—用例编写篇

本贴最后更新于 1444 天前,其中的信息可能已经渤澥桑田

Web自动化神器TestCafe—用例编写篇

一、用例编写基本规范

1、 fixture测试夹具

使用TestCafe编写测试用例,必须要先使用fixture声明一个测试夹具,然后在这个测试夹具下编写测试用例,在一个编写测试用例的js或ts文件中,可以声明多个测试夹具

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');
});
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中的每一条测试用例设置前置执行的操作。案例代码如下:

import 'testcafe'

fixture(`百度案例`)
    .page('https://www.baidu.com')
	// 设置每条用例执行的前置操作
    .beforeEach(async t => {
        await t.typeText('#kw', "前置步骤").click('#su')
    });

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(async t => {
    await t.typeText('#kw', "test设置的前置")
    })
    ('百度搜索功能', async t => {
        await t.typeText('#kw', "python")
            .click('#su');
    })

给单独的用例设置后置操作

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');
    })   

2、夹具钩子

夹具钩子和测试钩子不同,夹具钩子只会在夹具中的第一个测试开始之前和最后一个测试完成之后运行。要添加夹具钩子,可以使用fixture.before和fixture.after方法来定义定义。另外在夹具钩子中无法访问测试页面,也无法对测试页面进行相关操作。
fixture(`百度案例`)
.page('https://www.baidu.com')
.before( async ctx => {
    // 前置夹具钩子
    console.log(ctx)
})
fixture(`百度案例`)
.page('https://www.baidu.com')
.after( async ctx => {
    console.log(ctx)
     // 后置夹具钩子
});
fixture(`百度案例`)
    .before(async ctx  => {
    	// 夹具钩子中保存数据
        ctx.someProp = 123;
    })

test('Test1', async t => {
    // 测试代码中获取数据
    console.log(t.fixtureCtx.someProp); 
});

三、跳过和选择用例

1、跳过用例

在执行测试的时候,如果说有用例不想执行,那么我们可以设置跳过用例执行。关于跳过用例执行testcafe中提供了fixture.skip 和test.skip方法。

2、选择用例

另外我们也可以使用fixture.only和test.only来筛选执行需要的用例,只有选择的用例或夹具运行,而所有其他应被跳过

以上就是testcafe中用例编写的所有内容啦,后续会持续更新TestCafe的相关使用文档。

回帖
请输入回帖内容 ...