【问题标题】:Integrate JIRA with Cucumber on Fail Test Case在失败测试用例中将 JIRA 与 Cucumber 集成
【发布时间】:2021-07-14 19:18:49
【问题描述】:

我在 github 中有一个在自动化测试用例失败时创建 jira 票证的代码示例。它收集 ITestResult 信息并使用它来创建票证。

我可以在每个测试场景中使用@After,但重复代码太多。我想在最终的测试执行中执行一次 - 在钩子或侦听器中执行一次。

问题: 黄瓜中是否有类似的机制来模拟 ITestResult?是否可以使用 QAF 库?

@Override
    public void onTestFailure(ITestResult result) {
            JiraPolicy jiraPolicy = result.getMethod().getConstructorOrMethod().getMethod().getAnnotation(JiraPolicy.class);
            boolean isTicketReady = jiraPolicy.logTicketReady();
            if (isTicketReady) {
                // raise jira ticket:
                System.out.println("is ticket ready for JIRA: " + isTicketReady);
                JiraServiceProvider jiraSp = new JiraServiceProvider("https://naveenautomationlabs.atlassian.net",
                        "naveenanimation20@gmail.com", "jaizMlfaUkTfffNOVPq29B29", "TA");
                String issueSummary = result.getMethod().getConstructorOrMethod().getMethod().getName()
                        + "got failed due to some assertion or exception";
                String issueDescription = result.getThrowable().getMessage() + "\n";
                issueDescription.concat(ExceptionUtils.getFullStackTrace(result.getThrowable()));
    
                jiraSp.createJiraTicket("Bug", issueSummary, issueDescription, "Naveen");
            }
    
        }

请帮助我。谢谢。

【问题讨论】:

    标签: java cucumber jira cucumber-jvm qaf


    【解决方案1】:

    QAF 尝试提供无缝的用户体验和功能,无论使用何种测试创作方法。这个案例是使用meta-data 和测试案例。

    在 BDD 方法中编写测试用例时,BDD 语法具有可以使用的元数据语句。 BDD2 语法,元数据可以作为单独的键值对提供: BDD 语法示例:

    Scenario: scenario in BDD syntax
    Meta-data: {'logTicketReady':true,'groups':['smoke','p1']}
       Given ...
       When ...
    End
    

    BDD2 示例:

    @smoke @p1
    @logTicketReady:true
    Scenario: scenario in BDD2 syntax
       Given ...
       When ...
    

    在 java 元数据中编写测试用例时,可以提供自定义注释(例如在您的情况下为 JiraPolicy)或 Metadata 注释。

    Java 示例:

    @MetaData("{'logTicketReady':true}")
    @Test(groups={"smoke","p1"})
    public void sampleJavaTest(){
      //implementation goes here
    }
    

    如果你已经创建了自定义注解,你也可以使用它。

    带有自定义注解的 Java 示例:

    @JiraPolicy(logTicketReady=true)
    @Test(groups={"smoke","p1"})
    public void sampleJavaTest(){
      //implementation goes here
    
    }
    

    要执行,请在 xml configuration 中使用适当的工厂类。

    您共享的方法可以修改如下,以同时使用 Coded 和 BDD 方法。

    @Override
    public void onTestFailure(ITestResult result) {
            TestNGScenario scenario = (TestNGScenario) result.getMethod();
            Map<String, Object> metadata = scenario.getMetaData();
          
            boolean isTicketReady = (boolean)metadata.getOrDefault("logTicketReady",false);
            if (isTicketReady) {
                // raise jira ticket:
                System.out.println("is ticket ready for JIRA: " + isTicketReady);
                JiraServiceProvider jiraSp = new JiraServiceProvider("https://naveenautomationlabs.atlassian.net",
                        "naveenanimation20@gmail.com", "jaizMlfaUkTfffNOVPq29B29", "TA");
                String issueSummary = metadata.get("name")
                        + "got failed due to some assertion or exception";
                String issueDescription = result.getThrowable().getMessage() + "\n";
                issueDescription.concat(ExceptionUtils.getFullStackTrace(result.getThrowable()));
    
                jiraSp.createJiraTicket("Bug", issueSummary, issueDescription, "Naveen");
            }
    
        }
    

    注意:使用 QAF 时,Cucumber 不是强制性的。如果你想使用标准 Cucumber runner 或有 cucumber-5 步骤实现,你需要使用qaf-cucumber。如果您在 Cucumber 1.x 中有步骤实现,请参考 documentation

    【讨论】:

    • 我不明白你在这里想说什么。请提供一些关于如何将 ITestListener 转换为 BDD cucumber 或 QAF 方法的具体示例。
    • 当使用BDDTestFactory2 时,您将能够使用ITestListener,这样您就可以使用您的原始方法,只需稍加修改即可,如上所述。使用 BDDTestFactory2 将您的功能文件作为 TestNG 测试运行。参考qmetry.github.io/qaf/latest/bdd-configuration.html
    • 看完文档后,我感到很困惑。它不提供分步指南。任何人都可以帮助我一步一步的指导?谢谢。
    • 你能分享一下目前的状态,你目前有什么,以及你是如何运行你的测试的吗?还与版本共享当前项目中使用的库的详细信息。如果要开始新项目,可以通过qaf-step-by-step qmetry.github.io/qaf-step-by-step-tutorial
    • 我仍在使用 AbstractTestNGCucumberTests 运行器尚未更改任何内容,但已将 qaf qaf-support 库添加到项目中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多