Qunit学习(二)——dataset

来源:互联网 发布:金卡支票打印软件 编辑:程序博客网 时间:2024/06/06 08:41
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