Squish中文网站 > 新手入门 > Squish数据驱动测试怎么做 Squish数据驱动用例读取失败怎么办
教程中心分类
Squish数据驱动测试怎么做 Squish数据驱动用例读取失败怎么办
发布时间:2026/06/29 18:45:51

  在Squish脚本写的比较多之后,最麻烦的其实不是多点几次按钮,而是同样的流程需要换很多组数据,就比如登录的时候要测好多账号,查询的时候要换不同的条件,新建表单的时候还要考虑正常值、空值和边界值,要是每组数据都去复制一份脚本,后面维护起来就会非常头疼,Squish数据驱动测试怎么做Squish数据驱动用例读取失败怎么办,其实核心的想法就是把具体的“操作步骤”写在脚本里面,然后把“输入的数据和预期的结果”单独放到数据文件里面。

 

  一、Squish数据驱动测试怎么做

 

  在Squish里面做数据驱动测试,一般都是用testData相关的函数去读外面的数据文件,这个工具支持读取.csv、.tsv、.xls、.xlsx这些格式,不过CSV和TSV文件默认是用UTF-8编码来处理的,所以如果测试数据里面有中文,最好也都统一保存成UTF-8,省得读出来之后变成乱码。

  1、先准备测试数据文件

 

  大家可以先新建一个CSV或者Excel文件,把里面的每一列都当成一个字段,就比如写上username、password、expectedMsg,然后每一行放一组测试数据,第一行这里建议把字段名写上,后面每行再写具体的数据,这样在脚本里读字段的时候会比较清楚,不用靠第几列去瞎猜意思。

 

  如果是比较简单的登录、查询或者表单输入,用CSV文件其实就够了;如果数据的列数比较多,或者负责测试的人更习惯用表格去维护,那也可以用Excel,刚开始的时候不要把数据文件弄得太复杂,先保证字段名能看懂、数据比较干净、每行能代表一个完整的用例就行。

 

  2、把数据文件放到合适目录

 

  数据文件可以放的地方有两个,一个是当前测试用例下面的testdata目录,另一个是测试套件里面的shared/testdata目录,如果我们在代码里只写了文件名,Squish就会先去当前测试用例的测试数据目录里找,要是找不到,再跑到套件共享的测试数据目录里去找;要是我们在代码里写的是绝对路径,那它就会直接按照这个路径去读文件。

 

  3、在脚本里循环读取每一行数据

 

  在脚本里面,我们可以通过testData.dataset("data.csv")把数据集取出来,然后再去循环里面的每一条记录,里面的字段值可以用testData.field(record,"字段名")来读,或者按照字段的序号来读也可以,Squish的文档里有说,testData.field()这个地方通过字段名或者字段索引,都能把某一行记录里的值取出来。

 

  二、Squish数据驱动用例读取失败怎么办

 

  如果遇到数据驱动用例读取失败的情况,通常都不是脚本本身的流程有问题,反而是文件路径、文件格式、字段名字、编码或者表格里的内容容易出状况,大家排查的时候先别急着去重新录制脚本,先看看数据文件本身对不对。

  1、先确认文件位置和文件名是否匹配

 

  比如脚本里面写的是testData.dataset("login.csv"),那就要去检查文件是不是真的叫login.csv,有没有不小心写成大写的Login.csv或者login.CSV,或者是不是把文件放错地方了,Squish在读不到文件、文件打不开或者格式看不懂的时候,都是会抛出可以捕获的异常的。

 

  2、检查CSV编码和分隔符

 

  CSV文件看着很简单,但是往往最容易出问题,比如文件明明是GBK编码,但是Squish却用UTF-8去读,这时候中文就很容易乱码;再比如表格里面实际是用分号隔开的,但是脚本却按照CSV的逗号去读,这就会让字段整个错位,CSV和TSV在Squish里都是按UTF-8处理的,这个地方需要多注意一下。

 

  3、核对字段名和行列索引

 

  字段名的大小写、空格还有看不见的隐藏字符,这些都会导致读取不成功,比如表头写的是userName,但是脚本里写成了小写的username,这两个看着差不多,但其实就是两个不同的字段,还有一种情况是表头后面不小心多了个空格,眼睛很难看出来,但是脚本读的时候就会对不上。

 

  三、数据驱动脚本还要注意哪些细节

 

  做数据驱动并不是把所有东西往表格里一扔就完事了,表格说到底只是个数据来源,脚本里面还得去处理数据校验、异常提示、用例日志,还有执行失败之后的定位问题,要不然数据变多之后,排查起来会比普通的脚本还要麻烦。

  1、每一行数据都要有明确预期

 

  千万不要只在表格里写输入值,不写预期的结果,比如登录的数据里面,正常的账号后面要写上“登录成功”,密码错误的要写上“密码错误”,没输入账号的要写上“请输入账号”,这样脚本每跑一行才能去判断结果对不对,不会变成单纯的批量瞎操作。

 

  2、日志里要打印当前数据编号

 

  数据驱动用例一旦报错,最头疼的就是不知道到底是哪一行死掉了,我们可以在每次循环刚开始的时候,把当前的行号、关键的输入值或者用例编号用日志打印出来,这样在报告里看到失败了,就能马上回过头去数据文件里找到对应的是哪一条。

 

  3、不要让一条坏数据拖垮整批测试

 

  要是有一行数据的格式明显是不对的,比如必填的地方是空的,或者没有写预期结果,那可以在脚本里先做个简单的判断,然后决定是直接跳过还是记录成失败,数据量变大之后,测试脚本得说明白“到底是哪一条数据不行、为什么不行”,而不是直接报一个读取异常就把整个测试卡死了。

 

总结

 

  总的来看,Squish数据驱动测试怎么做Squish数据驱动用例读取失败怎么办,关键的地方还是要先把数据文件、目录的规则、字段名字、编码和读取的逻辑给理清楚,CSV比较适合轻量的数据,Excel适合多个人一起维护;只给本用例用的数据就放本地testdata,公共的数据就放shared/testdata,读取失败的时候就按照文件位置、格式编码、字段名、索引顺序去一个个排查,基本上就能把问题找出来了。

135 2431 0251