Selenium结合Unittest

news2024/11/17 11:25:44

1、Unittest:单元测试框架

——对软件中的最小可测单元进行检查和验证

作用:

  1. 提供用例组织及执行
  2. 提供丰富的断言方法(判断实际结果与预期结果是否一致)
  3. 提供丰富的日志及测试结果

2、Unittest核心要素

  • TestCase(测试用例):包含完整得测试流程
  1. setUp: 预置条件
  2. run: 运行脚本
  3. tearDown: 结束条件
  • TestSite(测试用例集):一系列的测试工作,相当于把是多个关联的步骤集中在一起;如:登录、汇款、退出,同一个业务流程集中在一起了
  • TextTestRunner: 用来执行测试用例
  • Fixture:  一个测试用例环境的搭建和销毁——用的不多

案例:

calculator.py模块:

class Math:
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a+self.b

测试calculator.py的模块

from calculator import Math
import unittest

class TestMath(unittest.TestCase):
    def setUp(self): #需要预设提前执行的可以放这里
        print("test start")

    def test_add(self):
        j = Math(5,10) #调用Math函数,传入值
        '''实际结果与预期结果一致'''
        self.assertEqual(j.add(),15) #断言,进行判断实际结果与预期结果是否一致
        '''实际结果与预期结果不一致'''
        self.assertEqual(j.add(),12)

    def tearDown(self): #测试用例执行完,需要执行
        print("test end")

if __name__ == "__main__":
    #魔法方法,name代表TestMath中的方法,main代表整个模块的方法,#检测下当前文件里面方法和main里面的方法是否一致
    #构造测试集
    suite = unittest.TestSuite()
    suite.addTest(TestMath("test_add"))#找到类,调用类里面的方法
    #执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

【实际结果与预期结果一致】运行结果:
Ran 1 test in 0.011s

OK
test start
test end
【实际结果与预期结果不一致】运行结果:

Ran 1 test in 0.019s

FAILED (failures=1)


12 != 15

Expected :15
Actual   :12

多个用例执行:

案例:

calculator.py模块:

class Math:
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b

    def sub(self):
        return self.a - self.b

 测试calculator.py的模块:

from calculator import Math
import unittest

class Testadd(unittest.TestCase):
    def setUp(self): #需要预设提前执行的可以放这里
        print("add test start")

    def test_add(self):
        j = Math(5,10) #调用Math函数,传入值
        self.assertEqual(j.add(),15) #断言,进行判断实际结果与预期结果是否一致

    def test_add1(self):
        j = Math(100,100)
        self.assertEqual(j.add(),200)

    def tearDown(self): #测试用例执行完,需要执行
        print("add test end")


class Testsub(unittest.TestCase):
    def setUp(self): #需要预设提前执行的可以放这里
        print("sub test start")

    def test_sub(self):
        i = Math(10,5) #调用Math函数,传入值
        self.assertEqual(i.sub(),5) #断言,进行判断实际结果与预期结果是否一致

    def test_sub1(self):
        i = Math(100,100)
        self.assertEqual(i.sub(),0)

    def tearDown(self): #测试用例执行完,需要执行
        print("sub test end")


if __name__ == "__main__":
    #魔法方法,name代表TestMath中的方法,main代表整个模块的方法,#检测下当前文件里面方法和main里面的方法是否一致
    #构造测试集
    suite = unittest.TestSuite()
    suite.addTest(Testadd("test_add"))#找到类,调用类里面的方法
    suite.addTest(Testadd("test_add1"))
    suite.addTest(Testsub("test_sub"))
    suite.addTest(Testsub("test_sub1"))
    #执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)

 * Pycharm执行只可运行2条测试用例,可用sublime text3运行查看结果。

第一步:查看Pycharm项目储存路径:

第二步:如下图打开

 

第三步:Ctrl+B运行代码:

 总结:

感谢每一个认真阅读我文章的人!!!

 我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 

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

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

相关文章

易混淆-for循环中的break与return

1、for循环中的return不仅会跳出循环,还还会跳出当前函数。 2、for循环中的break只会跳出循环,结束for循环。 例:

Git的远程操作与多人协作

"爱在地图上剥落,我离孤单几公里~" 我们目前所说、所学的内容(工作区、暂存区、版本库)都只是存在于本地上,也就是说你的一台机器上只有这么一个你维护的版本库。可是Git是一个分布式版本控制系统,这又是什…

国产化 | 走近人大金仓-KingbaseES数据库

引入 事务隔离级别 || KingbaseES数据库 开篇 1、KingbaseES数据库 百度百科:金仓数据库的最新版本为KingbaseES V8, KingbaseES V8在系统的可靠性、可用性、性能和兼容性等方面进行了重大改进,支持多种操作系统和硬件平台支持Unix、Linux…

搭建测试平台开发(一):Django基本配置与项目创建

一、安装Django最新版本 1 pip install django 二、创建Django项目 首先进入要存放项目的目录,再执行创建项目的命令 1 django-admin startproject testplatform 三、Django项目目录详解 1 testplatform 2 ├── testplatform  # 项目的容器 3 │ ├──…

2.03 PageHelper分页工具

步骤1&#xff1a;在application.yml中添加分页配置 # 分页插件配置 pagehelper:helperDialect: mysqlsupportMethodsArguments: true步骤2&#xff1a;在顶级工程pom文件下引入分页插件依赖 <!--5.PageHelper --> <dependency><groupId>com.github.pagehe…

《golang设计模式》第一部分·创建型模式-02-原型模式(Prototype)

文章目录 1. 概念1.1 简述1.2 角色1.3 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概念 1.1 简述 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 1.2 角色 Prototype&#xff08;抽象原型类&#xff09;&#xff1a;它是声明克隆方法的接口…

python多进程编程(模式与锁)

multiprocessing的三种模式 fork&#xff0c;【拷贝几乎所有资源】【支持文件对象/线程锁等传参】【unix】【任意位置开始】【快】spawn&#xff0c;【run参数传参必备资源】【不支持文件对象/线程锁等传参】【unix、win】【main代码块开始】【慢】forkserver&#xff0c;【ru…

数据库提供的系统函数及添加外键约束

十八、数据库提供的系统函数 1、数值型函数 2、字符串函数 注意&#xff1a;使用utf8mb4或者utf8汉字都在第三个字节&#xff0c;是Unicode编码&#xff0c;所以一个汉字占3个字节 GBK编码&#xff0c;一个汉字两个字节 char_length()不管编码&#xff0c;中文英文都一个 下标…

Linux下安装RabbitMQ教程

官方安装指南&#xff1a;https://www.rabbitmq.com/install-rpm.html 我们将要安装的RabbitMQ的版本是3.8.2 el/7/rabbitmq-server-3.8.2-1.el7.noarch.rpm - rabbitmq/rabbitmq-server packagecloud 不需要单独安装Erlang环境。 2. 环境配置&#xff1a; 前提&#xff…

吃透《西瓜书》第三章 线性模型

&#x1f349; 吃瓜系列 教材&#xff1a;《机器学习》 周志华著 &#x1f552;时间&#xff1a;2023/7/25 &#x1f4d3; 参考&#xff1a;周志华《机器学习》西瓜书啃书指导 &#x1f4d3; 参考&#xff1a;第3章-一元线性回归 前言 什么是回归&#xff1f; 回归&#xff1…

echart折线图,调节折线点和y轴的间距(亲测可用)

options代码&#xff1a; options {tooltip: {trigger: axis, //坐标轴触发&#xff0c;主要在柱状图&#xff0c;折线图等会使用类目轴的图表中使用。},xAxis: {type: category,//类目轴&#xff0c;适用于离散的类目数据&#xff0c;为该类型时必须通过 data 设置类目数据。…

申请开通【商家转账到零钱】超时后如何反馈?

前言 在微信开放社区看到很人【商家转账到零钱】超过了7-15个工作日没有回复&#xff0c;还在审核中&#xff0c;遇到这个问题怎么解决呢&#xff1f;我最近正好在申请&#xff0c;这篇文章我就要讲讲我是如何找到客服&#xff0c;并且得到反馈的。 步骤 1.关注【腾讯客服】公…

VBA技术资料MF34:检查Excel自动筛选是否打开

【分享成果&#xff0c;随喜正能量】聪明人&#xff0c;抬人不抬杠&#xff1b;傻子&#xff0c;抬杠不抬人。聪明人&#xff0c;把别人抬得很高&#xff0c;别人高兴、舒服了&#xff0c;看你顺眼了&#xff0c;自然就愿意帮你&#xff01;而傻人呢&#xff1f;不分青红皂白&a…

nsq整体架构及各个部件作用详解

文章目录 前言 nsq的整体架构图 部件&#xff1a;nsqd 部件&#xff1a;nsqlookupd 部件&#xff1a;nsq连接库 部件&#xff1a;nsqadmin 前言 上两篇博客 centos环境搭建nsq单点_YZF_Kevin的博客-CSDN博客 linux环境搭建nsq集群_YZF_Kevin的博客-CSDN博客 我们讲了nsq是…

【Qt】QML-01:使用QtCreator10创建QML工程,并讲解第一个程序:Hello World

1、创建QML工程 1&#xff09;新建工程 打开QtCreator10,依次点击“Create Project” --> “Application(Qt)” --> “Qt Quick Application(compat)” 注意&#xff1a;本人打算使用Qt5.15.2创建工程&#xff0c;而非Qt6,因此选择兼容低于Qt6版本的“Qt Quick Applicat…

深度学习入门教程(2):使用预训练模型来文字生成图片TextToImageGenerationWithNetwork

本深度学习入门教程是在polyu HPCStudio 启发以及资源支持下进行的&#xff0c;在此也感谢polyu以及提供支持的老师。 本文内容&#xff1a;在GoogleColab平台上使用预训练模型来文字生成图片Text To Image Generation With Network &#xff08;1&#xff09;你会学到什么&a…

TEE GP(Global Platform)技术委员会及中国任务小组

TEE之GP(Global Platform)认证汇总 一、TEE GP技术委员会 二、GP中国任务小组 参考&#xff1a; GlobalPlatform Certification - GlobalPlatform

QT: 用定时器完成闹钟的实现

闹钟项目&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QDebug> #include <QTextToSpeech> #include <QMessageBox> #include <QTimer>QT_BEGIN…

十三章:使用图像级监督学习像素级语义关联性的弱监督语义分割

0.摘要 分割标签的不足是野外语义分割的主要障碍之一。为了缓解这个问题&#xff0c;我们提出了一个新颖的框架&#xff0c;根据图像级别的类别标签生成图像的分割标签。在这种弱监督的设置下&#xff0c;已知训练模型更倾向于分割局部有区别的部分&#xff0c;而不是整个物体区…

springMVC--数据验证以及国际化

文章目录 springMVC--数据验证以及国际化概述JSR 303 验证框架Hibernate Validator 扩展注解 应用实例需求说明代码实现引入验证和国际化相关的jar 包修改Monster.java修改MonsterHandler.java测试效果配置国际化文件springDispatcherServlet-servlet.xml创建国际化文件springm…