博客自动化测试

news2024/11/17 19:53:09

1、熟悉项目

2、针对核心流程设计测试用例(手工测试用例)

3、将手工测试用例转化成自动化测试用例

4、部署


1、熟悉项目 

2、针对核心流程设计测试用例(手工测试用例)

3、将手工测试用例转化成自动化测试用例

代码结构如何设计:

初始化动作:BeforeAll        创建驱动

退出动作:AfterAll              退出浏览器

登录

public static Stream<Arguments> Generator() {
        return Stream.of(Arguments.arguments("http://localhost:8080/blog_content.html?id=1",
                "博客正文", "如何学习Java?"));
    }

    //    输入正确的账号,密码登录成功
    @ParameterizedTest
   // @ValueSource(strings = {"zhangsan","123","http://localhost:8080/login.html"})
    @CsvFileSource(resources = "LoginSuccess.csv")
    public void LoginSuccess(String username,String password,String blog_list_url) throws InterruptedException {
        //打开博客登录页面
        webDriver.get("http://localhost:8080/login.html");
        //sleep(3000);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);  //智能等待
        //输入账号admin
        webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);  //智能等待
        //输入密码123
        webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);  //智能等待
        //点击提交按钮
        webDriver.findElement(By.cssSelector("#submit")).click();
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);  //智能等待
        //跳转到列表页
        //获取当前页面url
        String cur_url = webDriver.getCurrentUrl();
        //如果url=http://localhost:8080/login.html,测试通过,否则测试用例不通过
        Assertions.assertEquals(blog_list_url,cur_url);
        webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);  //智能等待
        //列表页展示用户信息是admin
        //用户名是admin测试通过,否则测试不通过
        String cur_admin = webDriver.findElement(By.cssSelector("#username")).getText();
        Assertions.assertEquals(username,cur_admin);
    }

博客数量

/*
    * 博客列表页博客数量不为0*/
    @Test
    void BlogList() {
        //打开博客列表页
        webDriver.get("http://localhost:8080/myblog_list.html");
        //获取页面上所有博客标题对应的元素
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        int title_num = webDriver.findElements(By.cssSelector(".title")).size();
        //如果元素数据不为0,测试通过
        Assertions.assertNotEquals(0,title_num);
    }

查看全文

/*
    * 博客详情页校验
    * url
    * 博客标题
    * 页面title是“博客详情页”*/
    @ParameterizedTest
    @MethodSource("Generator")
    void BlogDetail(String expected_url,String expected_title,String expected_blog_title) {
        //找到第一篇博客对应的查看全面按钮
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        webDriver.findElement(By.xpath("//*[@id=\"artDiv\"]/div[1]/a[1]")).click();
        //获取当前页面url
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        String cur_url = webDriver.getCurrentUrl();
        //获取当前页面的title
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        String cur_title = webDriver.getTitle();
        //获取博客标题
        String cur_blog_title = webDriver.findElement(By.cssSelector("#title")).getText();
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        Assertions.assertEquals(expected_title,cur_title);
        Assertions.assertEquals(expected_blog_title,cur_blog_title);
        if (cur_url.contains(expected_blog_title)){
            System.out.println("测试通过");
        } else {
            System.out.println("测试不通过");
        }
    }

写博客,发博客

//发布博客
    @Test
    void EditBlog() throws InterruptedException {
        //找到写博客按钮,点击
        webDriver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)")).click();
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        //通过JS将标题直接输入
        ((JavascriptExecutor)webDriver).executeScript("document.getElementById(\"title\").value=\"自动化测试\"\n");
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        //点击发布
        webDriver.findElement(By.cssSelector("#submit")).click();
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        //获取当前页面url
        String cur_url = webDriver.getCurrentUrl();
        Assertions.assertEquals("http://localhost:8080/myblog_list.html",cur_url);
    }
    /*
    * 校验已发布博客的标题
    * 校验已发布博客时间*/
    @Test
    void BlogInfoChecked() {
        webDriver.get("http://localhost:8080/myblog_list.html");
        //获取第一篇博客的标题
        String first_blog_title = webDriver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.title")).getText();
        //获取第一篇博客发布时间
        String first_blog_time = webDriver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.date")).getText();
        //校验博客标题是不是自动化测试
        Assertions.assertEquals("自动化测试",first_blog_title);
        //如果时间是2023-10-21发布的,测试通过
        if(first_blog_time.contains("2023-10-21")) {
            System.out.println("测试通过");
        } else {
            System.out.println("当前时间是:"+first_blog_time);
            System.out.println("测试不通过");
        }
    }

删除博客

/*
    * 删除发布的博客*/
    @Test
    void DeleteBlog() {
        //打开博客列表页面
        webDriver.get("http://localhost:8080/myblog_list.html");
//        //点击查看全文按钮
//        webDriver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > a:nth-child(4)")).click();
        //点击删除按键
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        webDriver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > a:nth-child(6)")).click();
        //博客列表页第一篇标题不是“自动化测试”
        webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);
        String first_blog_title = webDriver.findElement(By.cssSelector("#artDiv > div:nth-child(1) > div.title")).getText();
        //校验当前博客标题不等于“自动化测试”
        Assertions.assertNotEquals(first_blog_title,"自动化测试");
    }

注销


问题:你为什么要对你这个项目做自动化测试?

我学了自动化测试,相对我所学的知识进行一个应用。

问题:你针对哪些点做了测试用例?为什么只针对这些模块做了测试用例?

对登录,博客数量,查看全文,写博客等做了测试。

我是针对我的项目的主流程和核心做了自动化测试。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1118597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微信小程序开发】小程序微信用户授权登录(用户信息手机号)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于小程序的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 授权流程讲解 一.用户信息授权登录 1.w…

基于springboot小区物业管理系统

功能如下图所示 摘要 基于Spring Boot的小区物业管理系统是一项重要的解决方案&#xff0c;旨在提升小区物业管理的效率和质量。这个系统整合了现代技术和管理实践&#xff0c;为小区内的住户和物业管理人员提供了便捷的工具&#xff0c;以更好地管理和维护住宅区。该系统的关键…

10_集成学习方法:随机森林、Boosting

文章目录 1 集成学习&#xff08;Ensemble Learning)1.1 集成学习1.2 Why need Ensemble Learning?1.3 Bagging方法 2 随机森林(Random Forest)2.1 随机森林的优点2.2 随机森林算法案例2.3 随机森林的思考&#xff08;--->提升学习&#xff09; 3 随机森林&#xff08;RF&a…

【RNA biology】RNA的多功能性与早期生命进化

文章目录 RNARNA plays core functions in Central Dogma of BiologyrRNAsnRNA RNA worldReplication催化作用感知环境变化并作出响应 来自Manolis Kellis教授&#xff08;MIT计算生物学主任&#xff09;的课 油管链接&#xff1a;6.047/6.878 Lecture 7 - RNA folding, RNA wo…

PHP代码审计工具

PHP代码审计工具 1 环境准备 Seay源代码审计系统.exe 和准备靶场的源码php 2 Seay下载地址 https://github.com/f1tz/cnseay安装Seay源代码审计系统.exe报错时&#xff0c;安装.net framework 3.5 # windows插件.net framework 3.5 下砸地址 https://www.microsoft.com/en…

CSS基础入门01

目录 1.CSS是什么 2.基本语法规范 3.引入方式 3.1内部样式表 3.2行内样式表 3.3外部样式 4.代码风格 4.1样式格式 4.2样式大小写 4.3空格规范 5.选择器 5.1选择器的功能 5.2选择器的种类 6.基础选择器 6.1标签选择器 6.2类选择器 6.3id 选择器 6.4通配符选择…

【趣味随笔】盘点那些国内外知名的扫地机器人品牌

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

电容屏物体识别手工制作

电容屏识别物体效果2 电容屏识别物体效果1 电容屏识别物体效果3 电容屏识别物体效果4 电容识别物理效果5 我们感兴趣的是找到让我们的平面屏幕与物理三维物体和表面交互的方法。 触摸屏无处不在&#xff0c;成千上万的应用程序中有多种设备和屏幕格式&#xff0c;但我们只找到…

十三水中各种牌型判断LUA版

近期回归程序行业&#xff0c;由于业务需求需要做十三水游戏&#xff0c;什么是十三水就不在多讲&#xff0c;下面是判断十三水牌型的方法&#xff08;带大小王&#xff09; GetSSSPaiType {}; local this GetSSSPaiType; local huaseTable {}; local numTable {}; functi…

计算机组成原理 new06 第二章 BCD码

文章目录 BCD码8421码余3码2421码三种码的总结 BCD码 概念&#xff1a;在计算机中&#xff0c;除了能够用二进制表示十进制之外&#xff0c;在二进制的基础上还衍生出了很多种的表示方式这些种表示方式的统称就是BCD码。 8421码 概念&#xff1a;8421码用4位二进制来表示一个十…

Python学习第1天-安装Python

文章目录 前言一、下载Python二、执行安装程序三、命令行验证总结 前言 以下榜单来自于TIOBE编程语言流行指数 不多说了&#xff0c;Python天下第一 一、下载Python 从官网下载Python安装程序 二、执行安装程序 找到python-3.12.0-amd64.exe执行&#xff0c;选择Install …

如何使用postman调用若依系统接口(报错401,认证失败,无法访问系统资源)

有时候我们想使用postman调用若依接口&#xff0c;会报下面的401错误&#xff0c;认证失败&#xff0c;无法访问系统资源。 原因是请求中没有token&#xff0c;没法通过若依的权限认证&#xff0c;下面来说一下如何解决。 {"msg": "请求访问&#xff1a;/syste…

提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透

文章目录 前言1. 无需公网IP&#xff0c;使用cpolar实现悟空CRM远程访问2. 通过公网来访问公司内网悟空CRM3. 设置固定连接公网地址 前言 悟空CRM是一款开源的客户关系管理系统&#xff0c;以"客户关系一对一理论"为基础&#xff0c;通过对企业业务流程的重组来整合…

【数据分享】2023年我国高新技术企业数据(免费获取\excel格式\shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。目前&#xff0c;在城市…

大数据Flink(一百):SQL自定义函数(UDF)和标量函数(Scalar Function)

文章目录 SQL自定义函数(UDF)和标量函数(Scalar Function)

计算机组成原理 new14 双端口RAM和多模块存储器

文章目录 双端口RAM 多模块存储器多体并行存储器高位交叉编址低位交叉编址单体多字存储器存储周期和访存 双端口RAM 在双端口RAM中&#xff0c;两个端口使用了不同的译码器&#xff0c;数据线&#xff0c;控制线&#xff0c;和读写电路。所以两个端口可以做到同时访问相同的存储…

Ettus USRP X410 配件讲解,如何选择对应的配件

Ettus USRP X410 产品图片 产品编号: 787272-01 附件 所需的附件 USRP电源线 可选附件 连接套件 SMA连接线 线缆 安装套件 通信电缆 风扇盒 汇总列表 名称编号价格Ettus USRP X410787272-01215,550.00USRP RIO电源线&#xff0c;中国785023-10165.00双百兆以太网PCIe接口…

C语言实现输入一行字符统计其中有多少个单词,单词之间用空格分隔开

完整代码&#xff1a; // 输入一行字符统计其中有多少个单词&#xff0c;单词之间用空格分隔开 #include<stdio.h>int main() {char ch;//num为单词的个数int num0;printf("请输入一行字符&#xff0c;单词之间用一个空格分隔开\n");while ((chgetchar())!\n)…

Linux:程序地址空间/虚拟地址等相关概念理解

文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么&#xff1f; 程序地址空间 在C和C程序中&#xff0c;一直有一个观点是&#xff0c;程序中的各个变量等都会有一定的地址空间&#xff0c;因此才会有诸如取地址&#xff0c;通过地址访问等操作&#xff0c;那…

【软件设计师-中级——刷题记录7(纯干货)】

目录 每日一言&#xff1a;持续更新中...你的编程水平是&#xff1f; A 入门&#xff1a;我对编程没有一点儿经验 B. 初级&#xff1a;了解一点基础知识&#xff0c;但没有写过代码 C. 中级&#xff1a;会写点简单代码&#xff0c;能看懂代码 D. 高级&#xff1a;写过多段代码&…