Karate 它´;使用数据表使用空手道进行数据库驱动的测试是可能的吗?

Karate 它´;使用数据表使用空手道进行数据库驱动的测试是可能的吗?,karate,Karate,在使用Cucumber编写API测试时,我实现了一些步骤定义,这些定义允许为每个场景指定数据库中需要存在的数据 大概是这样的: Given I have database table "users" with data: | id | name | | 1 | User 1 | 这将在指定的表中进行插入 空手道有可能做到这样吗 谢谢。是的,您需要在DBUTIL文件中使用insertRows方法,该文件是我从@peter借用的 然后可以调用这些方法并从表中传递变量 Background

在使用Cucumber编写API测试时,我实现了一些步骤定义,这些定义允许为每个场景指定数据库中需要存在的数据

大概是这样的:

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});
}
}