自动化测试系列(11)—— 测试用例(截图版)

自动化测试系列(11)—— 测试用例(截图版)

来写一个selenium+testng+reportng测试报告显示测试失败截图的测试用例


参考文章
reportng定制修改

失败后操作

    //用例结束的时候判断结果是否失败
    @AfterMethod(alwaysRun = true)
    public void afterMethod(ITestResult result) throws Exception {
        if (!result.isSuccess())
            catchExceptions(result);
    }

    //失败将设置的图片写入report
    public void catchExceptions(ITestResult result) throws IOException {
        if (!result.isSuccess()) {
            //在testng的report默认路径test-output下的html文件夹中创建一个截图文件夹以存放截图
            //截图放在这里把整个测试报告(test-output文件夹)单独打包发给别人查看也不会报错
            File file = new File("test-output/html/snapshot");
            Reporter.setCurrentTestResult(result);
            Reporter.log(file.getAbsolutePath());
            String filePath = file.getAbsolutePath();
            String dest = result.getMethod().getRealClass().getSimpleName()+"."+result.getMethod().getMethodName();
            String time = DateUtils.getCurrentDateTime2();
            String picName=filePath+File.separator+dest+time +".png";
            File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
            FileUtils.copyFile(srcFile, new File(picName));
            String escapePicName="snapshot"+File.separator+dest+time+".png";
            String openPicName=escapeString("snapshot"+File.separator+dest+time+".png");
            //window.open()实现点击图片在新窗口显示大图,其中图片路径需要转义
            String html="<img src='"+escapePicName+"' onclick='window.open(\""+openPicName+"\")'' hight='100' width='100'/>";
            Reporter.log(html);

        }
    }
    /**
     * 替换字符串
     * @param s 待替换string
     * @return 替换之后的string
     */
    public String escapeString(String s)
    {
        if (s == null)
        {
            return null;
        }

        StringBuilder buffer = new StringBuilder();
        for(int i = 0; i < s.length(); i++)
        {
            buffer.append(escapeChar(s.charAt(i)));
        }
        return buffer.toString();
    }

    /**
     * 将\字符替换为\\
     * @param character 待替换char
     * @return 替换之后的char
     */
    private String escapeChar(char character)
    {
        switch (character)
        {
            case '\\': return "\\\\";
            default: return String.valueOf(character);
        }
    }

这里我把时间工具类获取时间至毫秒的方法放一下,获取至毫秒就不用担心每分钟多次截图了

    public static String getCurrentDateTime2() {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        return sdf.format(calendar.getTime());
    }

待续


有问题请留言。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
登录自动化测试用例的编写可以按照以下步骤进行: 1. 确定测试目标:首先要明确登录功能的测试目标,例如验证用户能够成功登录系统。 2. 编写测试用例标题:给测试用例起一个简明扼要的标题,例如"登录功能测试"。 3. 编写测试步骤:根据登录功能的具体流程,编写测试步骤。例如: - 打开登录页面 - 输入有效的用户名和密码 - 点击登录按钮 - 验证是否成功登录 4. 编写预期结果:对于每个测试步骤,编写预期结果。例如: - 登录页面成功打开 - 用户名和密码正确,登录成功 - 登录成功后跳转到首页 5. 编写测试数据:为了验证不同情况下的登录功能,可以编写多组测试数据。例如: - 正确的用户名和密码 - 错误的用户名和密码 - 空的用户名和密码 6. 执行测试用例:使用自动化测试工具执行编写好的测试用例,并记录测试结果。 7. 分析测试结果:根据测试结果,判断登录功能是否正常工作。如果有失败的测试用例,需要进行问题排查和修复。 通过以上步骤,可以编写出针对登录功能的自动化测试用例,用于验证登录功能的正确性和稳定性。\[1\]\[3\] #### 引用[.reference_title] - *1* *3* [web自动化测试入门篇07 ——— 用例编写技巧](https://blog.csdn.net/weixin_38306507/article/details/130364946)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [自动化测试用例要怎么写,据说这是最全的......](https://blog.csdn.net/m0_70102063/article/details/126973637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值