dataset:qunit测试中一般要给数据库中预存一些数据以辅助测试,比如修改,删除等操作。这些数据以xml文件进行配置,以表名命名。我们以user.xml为例。
1.因为修改用户涉及到权限的问题,所以prepareData引入user.xml的同时,也要引入userRole.xml。当修改别人的信息时,要提示权限不够信息。
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<user
id="13"
username="tom"
password="1f22f6ce6e58a7326c5b5dd197973105"
status="0"
create_time="2014-06-22 20:36:48"
last_login="2014-06-30 14:47:13"
gender="1"
name="tom hanks"
phone="13164235801"
qq="913415854"
dept=""
rtx=""
co_email=""
user_email="tom_hanks@sina.com"
hometown="山东"
hobby="动漫"
address="北京"
house_status="0"
description=""
area="200"
head_photo=""
/>
<user
id="16"
username="yuliang"
password="1f22f6ce6e58a7326c5b5dd197973105"
status="0"
create_time="2014-06-22 20:36:48"
last_login="2014-06-30 14:47:13"
gender="1"
name="yuliang"
phone="13164235801"
qq="913415854"
dept=""
rtx=""
co_email=""
user_email="yuliang@126.com"
hometown="山东"
hobby="动漫"
address="北京"
house_status="0"
description=""
area="200"
head_photo=""
/>
</dataset>
本配置文件中,插入了两条user数据。在写自动化case的时候,在case开头引入即可,每次运行case,user表的数据都会清空,并将user.xml中定义的数据插入数据库。
<prepareData file="dataset/user.xml"/>
<testcase id="userInfoTest" desc="修改用户个人资料测试">
<include file="cases/template.xml"/>
<data-case id="modifyUserInfo" desc="修改用户资料" tag="modifyUserInfo">
<span style="color:#FF0000;"> <prepareData file="dataset/user.xml"/>
<prepareData file="dataset/userRole.xml"/></span>
<step ref="login_yuliang"/>
<call service="modifyUserInfo">
<param username="${username}"/>
<param gender="${gender}"/>
<param name="name">"yuliang"</param>
<param phone="${phone}"/>
<param qq="${qq}"/>
<param rtx=""/>
<param userEmail="${userEmail}"/>
<param hometown="${hometown}"/>
<param hobby="${hobby}"/>
<param address="${address}"/>
<param houseStatus="${houseStatus}"/>
<param description="${description}"/>
<param area="${area}"/>
<param headPhoto="${headPhoto}"/>
</call>
<assert>
<status value="200"/>
<body>
<![CDATA[
{"status":${status},
"message":${message},
"data":null
}
]]>
</body>
</assert>
<data>
<default>
<param username="yuliang"/>
<param gender="1"/>
<param name="name">"yuliang"</param>
<param phone="13164235801"/>
<param qq="13164235801"/>
<param rtx=""/>
<param userEmail="yuliang.jin@126.com"/>
<param hometown="山东"/>
<param hobby="动漫"/>
<param address="山东"/>
<param houseStatus="0"/>
<param description=""/>
<param area="200"/>
<param headPhoto=""/>
</default>
<tr>
<param address="河北"/>
<param status="0"/>
<param message="null"/>
</tr>
<tr>
<param status="-1"/>
<param gender="3"/>
<param name="message">"性别输入错误"</param>
</tr>
<tr>
<param status="-1"/>
<param qq="0"/>
<param name="message">"QQ号码长度或格式错误"</param>
</tr>
</data>
</data-case>
</testcase>
1.因为修改用户涉及到权限的问题,所以prepareData引入user.xml的同时,也要引入userRole.xml。当修改别人的信息时,要提示权限不够信息。
2.data中default的目的时,当我们测试某一字段是否合法时,将其它字段设为默认值,这样就其他字段就不会干扰待测字段的测试。
3.prepareData中的值是数据库表中初始值,如果case执行没有完成数据更新(不是指case不通过,只要断言正确case就算通过,但是数据库数据不一定修改),case中定义的default值就不会被更新到数据库。另外,多个case(<tr>标签标识)执行时,每一个都会重新导入prepareData,因此前面case的操作结果不会体现在数据表中。数据表中保留最后一个case执行的结果。当然如果最后一个case没有对数据库表进行更新或者更新失败,表的数据保留上一case的操作结果。以此类推。
4.case中data default的值可以和原始表中的值不一样,一般为了测试某一个字段的数据是否合法,最好默认值和数据库中的一致。如果不一致,就必须保证合法,这样才不会干扰待测字段的正确测试。