Selenium:集成测试报告

news2024/12/22 23:33:25

目录

一、分拆后的实现代码

二、创建用于执行所有用例的ALL_HTMLtest.py文件

三、集成测试报告


随着软件不断迭代功能越来越多,对应的测试用例也会呈指数增长。一个实现几十个功能的项目,对应的用例可能有上百个甚至更多,如果全部集成在一个文件中,那么这个文件就很臃肿且维护麻烦。

一个很好的方法就是将这些用例按照功能类型进行拆分,分散到不同测试文件中,即一个项目,对应多个分支。

一、分拆后的实现代码

1、testbaidu.py

 1 from selenium import webdriver
 2 import unittest
 3 import time
 4 
 5 class MyTest(unittest.TestCase):
 6     def setUp(self):
 7         self.driver = webdriver.Chrome("F:\安装工具\python\chromedriver.exe")
 8         self.driver.maximize_window()
 9         self.driver.implicitly.wait(10)
10         self.base_url = "http://www.baidu.com"
11 
12     def test_baidu(self):
13         driver = self.driver
14         driver.get(self.base_url + "/")
15         driver.find_element_by_id("kw").clear()
16         driver.find_element_by_id("kw").send_key("unittest")
17         driver.find_element_by_id("su").click()
18         time.sleep(2)
19         title = assertEqual(title,"unittest_百度搜索")
20 
21     def tearDown(self):
22         self.driver.quit()

2、testyoudao.py

 1 from selenium import webdriver
 2 import unittest
 3 import time
 4 
 5 class Mytest(unittest.TestCase):
 6 
 7     def setUp(self):
 8         self.driver = webdriver.Chrome("F:\安装工具\python\chromedriver.exe")
 9         self.driver.maximize_window()
10         self.driver.implicitly_wait(10)
11         self.base_url = "http://www.youdao.com"
12     
13     def test_youdao(self):
14         driver = self.driver
15         driver.get(self.base_url + "/")
16         driver.find_element_by_id("query").clear()
17         driver.find_element_by_id("query").send.keys("webdriver")
18         driver.find_element_by_id("qb").click()
19         time.sleep(2)
20         title = driver.title
21         self.assertEqual(title, "webdriver - 有道搜索")
22 
23     def tearDown(self):
24         self.driver.close()

二、创建用于执行所有用例的ALL_HTMLtest.py文件

1、ALL_HTMLtest.py

 1 # coding=utf-8
 2 import unittest
 3 import time
 4 from HTMLTestRunner import HTMLTestRunner
 5 
 6 # 加载用例testbaidu,testyoudao
 7 import testbaidu
 8 import testyoudao
 9 
10 # 将测试用例添加到测试集中
11 suite = unittest.TestSuite()
12 
13 suite.addTest(testbaidu.MyTest("test_baidu"))
14 suite.addTest(testyoudao.Mytest("test_youdao"))
15 
16 if __name__ == '__main__':
17     # 执行测试
18     runner = unittest.TextTestRunner()
19     runner.run(suite)

拆分带来的好处显而易见,可以根据不同功能创建不同的测试文件,甚至不同的目录,还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,整体结构更加清晰。

但依然存在缺陷(当用例达到成百上千条时,在ALL_HTMLtest.py中addTest()添加测试用例就变得很麻烦)。。。

2、TestLoader类

unittest单元测试框架提供了TestLoader类,该类负责根据各种标准加载测试用例,并将它们返回给测试套件。

unittest提供了可以共享的defaultTestLoader类,可以使用其子类和方法创建实例,discover()方法就是其中之一。

discover(start_dir, pattern='test*.py', top_level_dir=None)

找到指定目录下的所有测试模块,并递归查找子目录下的测试模块,只有匹配到文件名才能被加载,如果启动的不是顶层目录,则顶层目录必须单独指定。

start_dir:要测试的模块名或测试用例目录;

pattern='test*.py':表示用例文件名的匹配原则,下面的例子中匹配文件名为以“test”开头的“.py”文件,星号“*”表示任意多个字符;

top_level_dir=None:测试模块的顶层目录,如果没有顶层目录,默认为None;

 1 # coding=utf_8
 2 import unittest
 3 from unittest import defaultTestLoader
 4 # 定义测试用例的目录为当前目录
 5 test_dir = './'
 6 discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py') 
 7 
 8 if __name__ == '__main__':
 9     runner = unittest.TextTestRunner()
10     runner.run(discover)

三、集成测试报告

HTMLTestRunner目前只针对单个测试文件生成测试报告,因此需要对上面的代码进行修改,修改后内容如下:

执行后,结果如下:

PS:请忽略报错,这里主要是举个例子,具体的实践请以实际业务场景进行调整。。。

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。未来的你肯定会感谢现在拼命的自己!

 

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

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

相关文章

RocketMQ中单消费者订阅多个Topic,会阻塞消费吗?

RocketMQ 问题 背景是这样: 最近有个项目用MQ做消息流转,在RocketMQ集群模式下,一个消费者实例,订阅了两个Topic A、B。 Topic A:存储的是批量业务消息。 Topic B:存储的是单个业务消息。 有个小伙伴问我…

基于C++的职工管理系统

1、管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C++来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责 普通员工职责:完成经理交给的任务 经理职责:完成…

分布式系统概念和设计-分布式文件系统服务体系结构和实践经验

分布式系统概念和设计 文件系统的特点 负责文件的组织,存储,检索,命名,共享和保护 文件包含数据和属性 数据:包含一系列数据项——8比特的字节,读写操作可访问任何一部分数据属性:用一个记录表…

一文详解 SCTP 协议

SCTP(Stream Control Transmission Protocol)流控制传输协议,由 RFC2960 定义。SCTP的设计目的是提供一种可靠的、面向消息的数据传输服务,以便于支持多点通信以及满足传输的可靠性需求。SCTP 目前广泛应用于VoIP、移动通信和云计算等领域。 SCTP 主要特点SCTP 消息结构SCTP …

Android9.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局

1.前言 在9.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…

应用层开发想转Android framework开发要从何开始

前言 现如今,由于市面上应用App的更新逐渐变少,很多Android移动应用开发者都开始转型做系统开发,这比开发应用有趣多了,因为你可以探索系统模块的运行原理,从框架层面去了解它。 在应用层,你只需要配置好…

JAVA-异常

文章目录 1.异常的体系1.3异常的分类 2.异常的处理2.2异常的抛出throw2.3异常的捕获2.3.1异常声明throws2.3.2 try-catch捕获并处理2.3.3 finally 2.4 异常的处理流程 3.自定义异常类 1.异常的体系 Throwable:是异常体系的顶层类,其派生出两个重要的子类…

前端框架篇学习--选择命令式还是声明式

命令式与声明式定义 大白话:假期回家了,我想吃老妈的大盘鸡,然后老妈就去采购食材,剁鸡块,卤鸡肉,切土豆,然后爆炒起来,想方设法给我做好吃的大盘鸡。老妈上菜的餐桌,我…

SQL语句学习笔记(对库、表、字段、的操作)

查看mysql的状态 status 启动、停止 mySQL服务 图像界面方法: dos窗口执行:services.msc 控制面板–>管理工具–>服务 命令行方法: 启动: net start mysql80 停止: net stop mysql80 启动与环境变量 添加环境…

UnityShaderBook中消融dissolve详解

消融这个效果算得上游戏开发中用的比较多的一个效果,表现游戏对象消失的时候经常用到,这个效果实现也非常简单,因此在《UnityShader入门精要》中也就短短几句话讲完了,这里我想针对书中的效果详细讲解一下。 Shader源代码&#x…

(浙大陈越版)数据结构 第二章 线性结构 2.2 堆栈

目录 2.2.1 什么是堆栈 堆栈 什么是堆栈 例子:计算机如何进行表达式求值?如:56/2-3*4 后缀表达式 堆栈的抽象数据类型描述 2.2.2 堆栈的顺序存储实现 例子:用一个数组实现两个堆栈,要求能最大利用数组空间&…

路径之谜(DFS)-2016年蓝桥杯国赛

路径之谜-2016年国赛 1、题目描述2、解题思路3、代码实现1、题目描述 小明冒充 X 星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 nn* 个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能…

【Java虚拟机】JVM常见诊断命令和调试工具

1.JVM常用命令行参数jps和jinfo实操 准备测试代码 /*** author lixiang* date 2023/5/4 20:53*/ public class JVMTest {public static void main(String[] args) throws InterruptedException {Thread.sleep(1000000);} }(1)命令jps:全称 …

【exgcd】牛客练习赛 D-青蛙兔子的约会

D-青蛙兔子的约会_牛客练习赛111 (nowcoder.com) 题意: 思路: 感觉和那个青蛙的约会比较像 就是列了个方程: a*xb*yn 考虑用exgcd解方程 然后看x在[L,R]有没有解 做法就是先把x的最小整数解求出来,然后考虑它的通解 xx0b/…

2023年五一数学建模 B 题过程与结果

文章目录 第一问第二问数据时序分析Auto-ARIMA第二问求解解的情况A->Q:D-> AQ-V总快递数 第三问第四问遗传算法求解 第五问SARIMA 模型拟合季节性规律 第一问 见 2023 年 五一杯 B 题过程 代码(第一问) 第二问 第二问考虑是一个时序预测问题&a…

图像生成论文阅读:Latent Diffusion算法笔记

标题:High-Resolution Image Synthesis with Latent Diffusion Models 会议:CVPR2022 论文地址:https://ieeexplore.ieee.org/document/9878449/ 官方代码:https://github.com/CompVis/latent-diffusion 作者单位:慕尼…

数字乡村建设与示范项目可行性研究报告(word可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 5.1 “三平台”:建设支撑农业发展农村治理惠民服务的三大应用平 台 5.3.1 建设智慧农业综合服务平台 夯实数字农业基础,推进重要农产品全产业链大数据…

redis服务搭建,C++实现redis客户端,redis远程可视化工具

目录 redis简介redis服务搭建redis常用命令C实现redis客户端redis远程可视化工具:Another Redis DeskTop Manager redis简介 官方网址:https://redis.io/ 开源地址:https://github.com/redis 中文文档:http://www.redis.cn/documentation.ht…

造轮子系列】面试官问:你能手写Vuex吗(一)?

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 Vuex 是 Vue.js 的状态管理模式,它主要解决了组件之间共享状态时的问题。在本文…

网络原理之传输层

网络原理,进一步了解网络是如何工作的~~ 按照网络协议这几个层次来展开分为五点: 应用层(重点介绍)传输层(重点介绍)网络层(跳过)数据链路层(跳过)物理层&a…