每次运行之前需要在数据库里populate需要的测试数据,这个可以用SQL ant task自动在test case里实现--相关test case第一步就是作数据初始化。

步骤:

(1) 建议先写好SQL script,把这些sql文件放在单独的SQL目录里。(optional)

(2) 把 mysql jdbc driver 文件 “mysql-connector-java-5.0.4-bin.jar”拷贝到 webtest的lib目录下,并且加入到java classpath (或者 webtest.sh /webtest.bat 的calsspath里)

哪里找文件 mysql-connector-java-5.0.4-bin.jar呢?

--先从这里下载mysql-connector-java-5.0.4.zip : http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.0.4.zip/from/http://mirror.services.wisc.edu/mysql/ ,解压后你会看到mysql-connector-java-5.0.4-bin.jar.

(3)写SQL task:

一个简单的SQL ant task是这样的:

<sql
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://host:port/database"
userid="sa"
password="pass"
src="data.sql"
/>

意思是链接到位于 host:port的mysql数据库里的"database" schema, 用sa/pass登陆,然后运行 "data.sql"文件。

或者这样直接写sql语句:

<sql
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://host:port/database"
userid="sa"
password="pass"
><![CDATA[

update some_table set column1 = column1 + 1 where column2 < 42;

]]></sql>

或者这样运行几个sql文件:

<sql
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://host:port/database"
userid="sa"
password="pass" >
<transaction src="data1.sql"/>
<transaction src="data2.sql"/>
<transaction src="data3.sql"/>
<transaction>
truncate table some_other_table;
</transaction>
</sql>

(4) 在你的webtest里把这个task加进来 :

<target name="testit">
<!–初始化数据 -->
<sql
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://host:port/database"
userid="sa"
password="pass" >
<transaction src="data1.sql"/>
<transaction src="data2.sql"/>
<transaction src="data3.sql"/>
<transaction>
truncate table some_other_table;
</transaction>
</sql>

<webtest name="myTest">
<config host="localhost" port="8080" protocol="http" basepath="" summary="true" saveresponse="true" />

<steps>
<invoke description="a" url="sb.php" />
<!–<verifyCookie name="AuthJ" text="four498@gmail.com~wangluo~1161665636" /> –>
<!–<invoke description="a" url="sb.php?a=1" /> –>

</steps>
</webtest>
</target>

上面只是简单例子,你们做时这个<sql>部分可以放到一个include文件里, 在test case里 include进来。