Karate 它´;使用数据表使用空手道进行数据库驱动的测试是可能的吗?
在使用Cucumber编写API测试时,我实现了一些步骤定义,这些定义允许为每个场景指定数据库中需要存在的数据 大概是这样的:Karate 它´;使用数据表使用空手道进行数据库驱动的测试是可能的吗?,karate,Karate,在使用Cucumber编写API测试时,我实现了一些步骤定义,这些定义允许为每个场景指定数据库中需要存在的数据 大概是这样的: Given I have database table "users" with data: | id | name | | 1 | User 1 | 这将在指定的表中进行插入 空手道有可能做到这样吗 谢谢。是的,您需要在DBUTIL文件中使用insertRows方法,该文件是我从@peter借用的 然后可以调用这些方法并从表中传递变量 Background
Given I have database table "users" with data:
| id | name |
| 1 | User 1 |
这将在指定的表中进行插入
空手道有可能做到这样吗
谢谢。是的,您需要在DBUTIL文件中使用insertRows方法,该文件是我从@peter借用的 然后可以调用这些方法并从表中传递变量
Background:
* def config = {username: 'XXXX', password: 'XXXXX', url: 'jdbc:oracle:thin:@XXXXX.net:6236/XXXX_XXXXX', driverClassName: 'oracle.jdbc.driver.OracleDriver'}
* def DbUtil = Java.type('util.DbUtils')
* def db = new DbUtil(config)
def Value=db.insertrows(插入sales.promotions(促销名称、折扣、开始日期、过期日期)值(
);)*
下面是DB文件的示例,您需要使用maven或gradle添加依赖项
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc6_g</artifactId>
<version>12.1.0.2</version>
</dependency>
package util;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class DbUtils {
private static final Logger logger = LoggerFactory.getLogger(DbUtils.class);
private final JdbcTemplate jdbc;
public DbUtils(Map<String, Object> config) {
String url = (String) config.get("url");
String username = (String) config.get("username");
String password = (String) config.get("password");
String driver = (String) config.get("driverClassName");
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
jdbc = new JdbcTemplate(dataSource);
logger.info("init jdbc template: {}", url);
}
public Object readValue(String query) {
return jdbc.queryForObject(query, Object.class);
}
public Map<String, Object> readRow(String query) {
return jdbc.queryForMap(query);
}
public List<Map<String, Object>> readRows(String query) {
return jdbc.queryForList(query);
}
public void insertRows(final String sql){
jdbc.batchUpdate(new String[]{sql});
}
}
org.springframework
SpringJDBC
5.1.9.1发布
mysql
mysql连接器java
5.1.6
com.oracle.jdbc
ojdbc6_g
12.1.0.2
包util;
导入java.util.List;
导入java.util.Map;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入org.springframework.jdbc.core.jdbc模板;
导入org.springframework.jdbc.datasource.driverManager数据源;
公共类DbUtils{
私有静态最终记录器Logger=LoggerFactory.getLogger(DbUtils.class);
私有最终jdbc模板jdbc;
公共DbUtils(映射配置){
字符串url=(字符串)config.get(“url”);
字符串用户名=(字符串)config.get(“用户名”);
字符串密码=(字符串)config.get(“密码”);
字符串驱动程序=(字符串)config.get(“driverClassName”);
DriverManager数据源dataSource=新的DriverManager数据源();
dataSource.setDriverClassName(驱动程序);
setUrl(url);
dataSource.setUsername(用户名);
dataSource.setPassword(密码);
jdbc=新的JdbcTemplate(数据源);
info(“initjdbc模板:{}”,url);
}
公共对象readValue(字符串查询){
返回jdbc.queryForObject(query,Object.class);
}
公共地图读取行(字符串查询){
返回jdbc.queryForMap(查询);
}
公共列表读取行(字符串查询){
返回jdbc.queryForList(查询);
}
公共void insertRows(最终字符串sql){
batchUpdate(新字符串[]{sql});
}
}