Qunit学习(二)——dataset

dataset:qunit测试中一般要给数据库中预存一些数据以辅助测试,比如修改,删除等操作。这些数据以xml文件进行配置,以表名命名。我们以user.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的值可以和原始表中的值不一样,一般为了测试某一个字段的数据是否合法,最好默认值和数据库中的一致。如果不一致,就必须保证合法,这样才不会干扰待测字段的正确测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值