gpt4 book ai didi

karate - 可以使用 Karate 使用数据表进行数据库驱动测试吗?

转载 作者:行者123 更新时间:2023-12-02 02:17:43 26 4
gpt4 key购买 nike

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

类似这样的事情:

Given I have database table "users" with data:
| id | name |
| 1 | User 1 |

这将在指定的表中执行插入操作。

Karate 可以做这样的事情吗?

谢谢。

最佳答案

是的,您的 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(INSERT INTO sales.promotions (promotion_name,discount, start_date,expired_date)VALUES( <name> );)*

下面是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});
}

}

关于karate - 可以使用 Karate 使用数据表进行数据库驱动测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60308322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com