如何在Cucumber步骤参数中同时支持空值与有值两种使用场景
Cucumber步骤兼容有值/空参数场景实现方案
根因分析
现有代码的Step注解使用(.+)作为参数捕获规则,+限定符要求必须匹配至少1个非空字符,当示例表中password列为空时,正则匹配失败,导致步骤无法触发。
修改方案
1. 调整正则捕获规则
将捕获组的(.+)替换为(.*),*限定符支持匹配0个或多个字符,可直接兼容空参数场景。
2. 可选:参数空值适配
根据业务逻辑需要,可在方法内对捕获到的空字符串做预处理,比如去除前后空白、转为null等。
修改后完整代码
@When("^User performs login with existing user account that has players in the account with (.*) and (.*)$") public void user_performs_login_with_existing_user_user_account_that_has_players_in_the_account(String username,String password) throws Throwable { try { // 按需增加空值处理逻辑,不需要可以删除 username = username.isBlank() ? null : username.trim(); password = password.isBlank() ? null : password.trim(); loginScreenCoreLogic.performLogin(username, password); } catch (Exception e) { ErrorReporter.reportError(e); } }
修改完成后,示例中给出的两种参数场景(password有值、password为空)都可以正常匹配触发该步骤。
内容的提问来源于stack exchange,提问作者Gopi Kumar
相关产品推荐
相关产品推荐

