锁定老帖子 主题:数据驱动测试
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-05
最后修改:2009-12-05
我们从一个最简单的登录例子开始。 @Test def should_login_success_with_exist_username_and_correct_password(){ LoginPage page = user.open(LoginPage,"/login.html") user.perform("login",['user1','1234'],on(page)) assert page.successLogin }
@Test def should_login_success_with_exist_username_and_incorrect_password(){ LoginPage page = user.open(LoginPage,"/login.html") user.perform("login",['user1','4321'],on(page)) assert page.successLogin,false }
@Test def should_login_success_with_exist_username_and_correct_password(){ assert login('user1','1234') } @Test def should_login_success_with_exist_username_and_incorrect_password(){ assert login('user1','4321'),false } def login(username,password){ LoginPage page = user.open(LoginPage,"/login.html") user.perform("login",[username,password],on(page)) return page.successLogin }
@Test(dataProvider="testdata") def testLogin(username,password,expected){ LoginPage page = user.open(LoginPage,"/login.html") user.perform("login",[username,password],on(page)) assert page.successLogin,expected } @DataProvider(name="testdata") def Object[][] dataForLogin(){ def data=new Object[2][] data[0]=['user1','1234',true] as Object[] data[1]=['user1','4321',false] as Object[] }
@DataProvider(name="testdata") def Object[][] dataForLogin(){ def data=new Object[2][] data[0]=['user1','1234',true] as Object[] data[1]=['user1','4321',false] as Object[] data[1]=['inexistuser','1234',false] as Object[] }
@DataProvider(name="testdata") def Object[][] dataForLogin(){ def data=new Object[2][] data[0]=['hrong','1234',true] as Object[] data[1]=['hrong','4321',false] as Object[] data[1]=['rhao','1234',false] as Object[] }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-12-07
很有启发,可惜不能ding一下。。。
|
|
返回顶楼 | |
发表时间:2009-12-07
嗯,测试数据同测试行为的分离
|
|
返回顶楼 | |
发表时间:2009-12-07
最后修改:2009-12-07
我想问楼主一个问题,在实际的"数据驱动测试"开发中,一些测试相关的db记录都是这么通过数据库数据初始化脚本直接插入到db中吗?
|
|
返回顶楼 | |
发表时间:2009-12-07
photon 写道 我想问楼主一个问题,在实际的"数据驱动测试"开发中,一些测试相关的db记录都是这么通过数据库数据初始化脚本直接插入到db中吗?
首先声明一下,本人的数据驱动测试经验并不多,但是个人认为所有的测试数据都需要由环境准备。 |
|
返回顶楼 | |
发表时间:2009-12-07
ronghao 写道 photon 写道 我想问楼主一个问题,在实际的"数据驱动测试"开发中,一些测试相关的db记录都是这么通过数据库数据初始化脚本直接插入到db中吗?
首先声明一下,本人的数据驱动测试经验并不多,但是个人认为所有的测试数据都需要由环境准备。 我的数据驱动测试经验也很少。虽然还不清楚你说的测试数据由环境准备什么意思,但我想知道是否遇到过这样的问题: 如果每个dev准备自己的测试环境,创建db纪录,会不会在集成的时候造成db的冲突,比如这个简单和极端的情况,你用于fail的用户名/密码,却被另一个dev当作能成功登陆的用户对待。如果发现类似的问题,应该怎么解决? |
|
返回顶楼 | |
发表时间:2009-12-08
单元测试下的数据驱动测试倒是有dbunit和dddunit来支持。
集成测试下倒没有研究过,主要涉及到测试环境是否存在多人共用情况,如果不存在此种情,倒是可以在集成测试脚本启动前加载进行测试数据环境加载。 |
|
返回顶楼 | |
发表时间:2009-12-08
最后修改:2009-12-08
太好了,正在思考这方面的问题。
ps:我觉得适用范围可以是功能测试(如selenium测试)和集成测试(如JUnit写出的集成测试) 更进一步的我想象的可能场景是,前者由QA mm来维护测试数据文件,后者由开发人员来维护测试数据文件。 |
|
返回顶楼 | |
发表时间:2009-12-08
photon 写道 ronghao 写道 photon 写道 我想问楼主一个问题,在实际的"数据驱动测试"开发中,一些测试相关的db记录都是这么通过数据库数据初始化脚本直接插入到db中吗?
首先声明一下,本人的数据驱动测试经验并不多,但是个人认为所有的测试数据都需要由环境准备。 我的数据驱动测试经验也很少。虽然还不清楚你说的测试数据由环境准备什么意思,但我想知道是否遇到过这样的问题: 如果每个dev准备自己的测试环境,创建db纪录,会不会在集成的时候造成db的冲突,比如这个简单和极端的情况,你用于fail的用户名/密码,却被另一个dev当作能成功登陆的用户对待。如果发现类似的问题,应该怎么解决? 是这样,环境准备的意思是在测试开始之前所有测试数据已经准备完毕,测试代码里不准备数据。环境准备可以是一段在测试开始前的脚本也可以是一个程序,它的目的是清理测试环境并准备数据。 既然是环境准备数据,那么显然这些脚本和程序也是要放入版本管理中的,这样就避免冲突。 |
|
返回顶楼 | |
发表时间:2009-12-08
daquan198163 写道 太好了,正在思考这方面的问题。
ps:我觉得适用范围可以是功能测试(如selenium测试)和集成测试(如JUnit写出的集成测试) 更进一步的我想象的可能场景是,前者由QA mm来维护测试数据文件,后者由开发人员来维护测试数据文件。 我的看法和你一致,使用范围应该是功能测试和集成测试,不包括单元测试。 |
|
返回顶楼 | |