博客系统之自动化测试

这篇具有很好参考价值的文章主要介绍了博客系统之自动化测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:针对个人博客项目进行测试,个人博客主要由四个页面构成:登录页、列表页、详情页和编辑页,主要功能包括:用户登录功能、发布博客功能、查看文章详情功能、查看文章列表功能、删除文章功能、退出功能。对于个人博客的测试主要就是针对主要功能进行测试,然后按照页面书写测试类。

自动化测试一般步骤
1)使用脑图编写web自动化测试用例
2)创建自动化项目,根据用例来实现脚本

 一、脑图

对主要功能进行测试:

 

博客系统之自动化测试,博客系统项目测试,selenium,自动化

 二、代码编写

  1. 根据脑图进行测试用例的编写:每个页面一个测试类,然后再各个测试类中进行测试用例的编写。
  2. 使用测试套件便于运行以及修改。
  3. 创建启动会频繁进行复用,所以单独创建一个类进行存储。
  4. 添加隐式等待,为了确保页面正确加载渲染。

1. 添加相关依赖pom.xml 

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

2. 新建包并在包下创建测试类

博客系统之自动化测试,博客系统项目测试,selenium,自动化

2.1公共类InitAndEnd

1.在所有测试开始之前加载驱动

2.在所有测试结束后关闭驱动

public class InitAndEnd {
    static WebDriver webDriver;
    @BeforeAll
    static void Init(){
        webDriver = new ChromeDriver();
    }

    @AfterAll
    static void End(){
        webDriver.quit();
    }
}

 2.2  BlogCases 类

1.测试用户登录功能

2.测试发布博客功能

3.测试查看文章详情功能

4.测试查看文章列表功能

5.测试删除文章功能

6.测试退出功能


@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogCases extends InitAndEnd{
    /**
     * 登录
     */
    @Order(1)
    @ParameterizedTest
    @CsvSource(value = "张三,123456")
    void Login(String username,String password){
        //打开登录页面
        webDriver.get("http://localhost:8080/blog_war/blog_login.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //输入用户名
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //输入密码
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //点击提交
        webDriver.findElement(By.cssSelector("#btn_login_submit")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //校验当前登录的用户是不是张三,如果是测试通过,否则测试不通过
        String user_name = webDriver.findElement(By.cssSelector("h3")).getText();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals(username,user_name);
        System.out.println("成功登录");
    }

    /**
     * 博客列表
     */
    @Order(2)
    @Test
    void BlogList() {
        webDriver.get("http://localhost:8080/blog_war/blog_login.html");
        webDriver.manage().timeouts().implicitlyWait(3000, TimeUnit.SECONDS);
        int blog_num = webDriver.findElements(By.cssSelector(".title")).size();
        Assertions.assertNotEquals(0, blog_num);
        String page_title = webDriver.getTitle();
        Assertions.assertEquals(page_title, "用户登录");
        System.out.println("博客列表加载成功");
    }
    /**
     *
     * 博客详情页校验
     */
    @Order(3)
    @Test
    void BlogDetail() {
        // 打开列表页
        webDriver.get("http://localhost:8080/blog_war/blog_list.html");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 找到查看全文按钮,点击
        webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[4]/a")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 获取博客标题
        String blog_title = webDriver.findElement(By.cssSelector("#div_detals_title")).getText();
        // 如果博客正文不为空,测试通过
        // 否则测试不通过
        Assertions.assertNotNull(blog_title);
        System.out.println("博客详情页校验");
    }

    /**
     * 写博客
     */
    @Order(4)
    @Test
    void EditBlog() throws IOException, InterruptedException {
        // 找到写博客按钮,点击
        webDriver.findElement(By.cssSelector("body > div.nav > div > div > a:nth-child(2)")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 执行js(选中标题输入框,输入字符串)
        ((JavascriptExecutor)webDriver).executeScript("document.querySelector(\"#title\").value=\"自动化测试\"");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        //编辑页的md是第三方插件,所以不可以直接使用sendkeys像编辑板块写入内容,可以先点击上方按钮,然后进行插入
        webDriver.findElement(By.cssSelector("#blog_edit > div.editormd-toolbar > div > ul > li:nth-child(20)")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        ((JavascriptExecutor)webDriver).executeScript("document.querySelector(\"#text_edit_content\").value=\"自动化测试\"");
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#submit")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        sleep(3000);
        //对弹出框校验
        webDriver.switchTo().alert().accept();
        // 校验页面跳转到列表页
        sleep(3000);
        String cur_url = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://localhost:8080/blog_war/blog_list.html", cur_url);
        // 校验第一条博客标题是不是刚刚发布的博客标题
        String first_blog_titlt = webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[1]")).getText();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        Assertions.assertEquals("自动化测试", first_blog_titlt);
        System.out.println("写博客校验");
    }
    /**
     * 删除博客
     */
    @Order(5)
    @Test
    void DeleteBolg() throws InterruptedException {
        // 找到查看全文按钮,点击
        webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[4]/a")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 找到删除按钮,点击
        webDriver.findElement(By.cssSelector("body > div.nav > div > div > a:nth-child(4)")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        sleep(3000);
        //对弹出框进行处理
        webDriver.switchTo().alert().accept();
        sleep(3000);
        // 校验当前页面是否跳转到博客列表页面
        String cur_url = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://localhost:8080/blog_war/blog_list.html", cur_url);
        // 获取博客发布是时间
        String blog_release_time = webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[2]")).getText();
        // 如果博客发布时间包括2023-08-18测试 不通过
        // 否则测试通过
        if(blog_release_time.contains("2023-08-18")) {
            System.out.println("博客发布时间:" + blog_release_time);
            System.out.println("测试不通过");
        } else {
            System.out.println("测试通过");
        }
    }
    /**
     * 退出博客
     */
    @Order(6)
    @Test
    void LogOut() throws InterruptedException {
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 找到退出按钮,点击
        webDriver.findElement(By.cssSelector("#a_list_logout")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        // 校验页面是否有登录文案
        String login_text = webDriver.findElement(By.cssSelector("body > div.login-container > form > div > div.title")).getText();
        // 如果有登录文案,退出成功(测试用例通过)
        // 否则,退出失败(测试不通过)
        sleep(3000);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
        if(login_text.equals("用户登录")) {
            System.out.println("测试通过");
        } else {
            System.out.println("测试不通过");
        }
    }

}

3.测试结果

所有测试用例通过,如图所示

博客系统之自动化测试,博客系统项目测试,selenium,自动化文章来源地址https://www.toymoban.com/news/detail-656735.html

到了这里,关于博客系统之自动化测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【软件测试】基于博客系统的自动化测试

    【软件测试】基于博客系统的自动化测试

    目录 1.我的博客系统链接 2.使用selenium对博客系统进行自动化测试 1.引入依赖 2.创建公共类 3.创建测试套件类 4.测试登陆界面 5. 测试博客列表页 6.测试写博客页面 7.测试删除博客 8.最终运行结果 用户登录 创建一个maven项目,在pop.xml中引入以下依赖 因为对每一个页面进行测试

    2024年02月15日
    浏览(10)
  • 自动化项目实战 [个人博客系统]

    自动化项目实战 [个人博客系统]

    效验第一篇博客 不是 “自动化测试” 退出到登录页面,用户名密码为空

    2024年02月08日
    浏览(10)
  • Python+Selenium自动化测试项目实战

    Python+Selenium自动化测试项目实战

    第 1 章 自动化测试 1.1、自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复的手工测试里面解脱出来,把时间和精力花到更好的地方去,

    2023年04月17日
    浏览(13)
  • 对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)

    对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)

    目录 一、总述 二、登录页面测试 一些准备工作  验证页面显示是否正确  验证正常登录的情况 该过程中出现的问题 验证登录失败的情况  关于登录界面的总代码  测试视频 三、注册界面的自动化测试 测试代码 过程中出现的bug  测试视频 四、博客列表页测试 登录情况下的

    2024年02月05日
    浏览(7)
  • po+selenium+unittest自动化测试项目实战

    po+selenium+unittest自动化测试项目实战

    1、新建一个包名:common(用于存放基本函数封装) (1)在common包下新建一个base.py文件,作用:页面操作封装。base.py文件代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

    2024年01月17日
    浏览(16)
  • Python Selenium3 自动化测试实战:构建高效测试项目

    Python Selenium3 自动化测试实战:构建高效测试项目

    💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在当今软件开发领域,自动化测试成为确保软件质量和提高开发效率的关键步骤。本文将深入探讨如何使

    2024年02月05日
    浏览(14)
  • Python+selenium自动化测试实战项目(全面,完整,详细)

    前言 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过清明一直没有更新,今天整理一下实战项目的代码共大家学习。(注:项目是针对我们公司内部系统的测试,只能内部网络访问,外部网络无法访问) 问: 1.外部网络无法访问,代码也无法运行

    2024年02月13日
    浏览(9)
  • 【python+selenium自动化测试实战项目】全面、完整、详细

    【python+selenium自动化测试实战项目】全面、完整、详细

    项目名称:**公司电子零售会员系统 项目目的:实现电子零售会员系统项目自动化测试执行 项目版本:v1.0 项目目录 项目环境 本版 python 36 pip insatll selenium PyCharm 2017.2.4 Windows 10 10.0 HTMLTestRunner.py 项目框架 unittest单元测试框架 pageobject 设计模式 UI对象库思想 项目设计 1.一个模

    2024年02月06日
    浏览(16)
  • selenium+pytest进行自动化测试(项目:白羽黑月SMS)

    最近在学习selenium和pytest,刚好找到一个合适的项目学习,根据bysms给出来的测试用例进行自动化测试编写 首先先写了登录的测试用例,因为后续测试都是在登陆的基础上测试的,所以把这单独写出来 创建一个login_success.py文件 随后新建一个text_ui.py文件,用来存放测试用例

    2024年02月05日
    浏览(9)
  • selenium+python web自动化测试框架项目实战实例教程

    selenium+python web自动化测试框架项目实战实例教程

    自动化测试对程序的回归测试更方便。 由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行... 可以运行更加繁琐的测试 自动化测试的一个明显好处就是可以在很短的时间内运行更多的测试。学习自动化测试最终目的是应用到

    2024年02月06日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包