Web自动化测试:测试用例断言!

news2025/7/21 1:39:50

运行测试用例时,需要判断用例是否执行成功,此时需要有一个我们期望的结果来进行验证。这里unittest中,如果一个case执行的过程中报错,或者我们判断结果不符合期望,就会判定此条用例执行失败,判断的条件主要是根据断言来实现,这节主要学习下断言的使用。

一、断言的方法

1.1 TestCase类中的部分断言方法

判断条件是否成立

assert_(expr,msg)

  • expr:判断条件,返回Boolean值
  • msg:判断失败后显示的信息

判断两个数据的值是否相同

assertEqual(first,second,msg)

  • first:第一个数据
  • second:第二个数据
  • msg:判断失败后显示的信息

判断两个数据的值是否不相同

assertEqual(first,second,msg)

  • first:第一个数据
  • second:第二个数据
  • msg:判断失败后显示的信息

判断条件是否为真

assertTrue(expr,msg)

  • expr:判断条件
  • msg:判断失败后显示的信息

判断条件是否为假

assertFalse(expr,msg)

  • expr:判断条件
  • msg:判断失败后显示的信息

判断两个数据是否相同

assertIs(first,second,msg)

  • first:第一个数据
  • second:第二个数据
  • msg:判断失败后显示的信息

判断两个数据是否不相同

assertIsNot(first,second,msg)

  • first:第一个数据
  • second:第二个数据
  • msg:判断失败后显示的信息

判断数据是否存在

assertIsNone(obj,msg)

  • obj:所传的数据
  • msg:判断失败后显示的信息

判断数据是否不存在

assertIsNotNone(obj,msg)

  • obj:所传的数据
  • msg:判断失败后显示的信息

判断数据a是否包含在数据b中

assertIn(a,b,msg)

  • a:数据a
  • b:数据b
  • msg:判断失败后显示的信息

判断数据a是否不包含在数据b中

assertNotIn(a,b,msg)

  • a:数据a
  • b:数据b
  • msg:判断失败后显示的信息

1.2 直接使用assert断言

习惯直接使用python中的assert断言,替代unittest.TestCase中的断言方法:

具体可以直接使用:

assert a == b

assert a != b

assert a in b

assert a not in b

assert a in None

assert a in not None

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

二、在框架中使用断言

由于在使用unittest中,每个类都继承了unittest.TestCase,所以使用时,直接在方法里使用self来调用断言方法。

import unittest
 
class Demo(unittest.TestCase):
 
    def test_01(self):
        self.assertEqual("demo","demo","两者不相等")

如果直接使用assert断言,则可以直接调用。

import unittest
 
class Demo(unittest.TestCase):
 
    def test_01(self):
        assert "demo" == "demo"

三、实例演示

这里使用百度贴吧的例子,第一个case是打开新页面,然后判断新页面的title是否是我们期望的,第二个case则是我们故意判断一个错误的title,使得断言失败,这两个case也分别使用上述的两种断言方法。

# -*- coding:utf-8 -*-
from selenium import webdriver
import unittest
from time import sleep
 
 
class PcLogin(unittest.TestCase):
 
    @classmethod
    def setUpClass(cls):
        print("所有测试开始")
 
    def setUp(self):
        print("测试开始")
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.driver.set_page_load_timeout(30)
        self.driver.get("https://tieba.baidu.com/")
 
    def test_01_demo(self):
        """打开新页签"""
        self.driver.find_element_by_css_selector("a[title = '娱乐明星']").click()
        all = self.driver.window_handles
        self.driver.switch_to.window(all[1])
        sleep(5)
        assert self.driver.title == "娱乐明星_百度贴吧", "断言失败,当前页面title是%s " % self.driver.title
 
    def test_02_demo2(self):
        """判断首页标题"""
        # 这个例子会断言失败
        self.assertEqual(self.driver.title, "娱乐明星_百度贴吧")
 
    def tearDown(self):
        print("测试完成")
        self.driver.close()
 
    @classmethod
    def tearDownClass(cls):
        print("所有测试结束")
 
 
if __name__ == '__main__':
    unittest.main()

运行结果:(运行了两条用例,其中失败了一条;符合我们预期的结果)

所有测试开始
测试开始
测试完成
.测试开始
测试完成
F
======================================================================
FAIL: test_02_demo2 (__main__.PcLogin)
判断首页标题
所有测试结束
----------------------------------------------------------------------
Traceback (most recent call last):
  File "D:/1git/uitest/test_case/demo.py", line 30, in test_02_demo2
    self.assertEqual(self.driver.title, "娱乐明星_百度贴吧")
AssertionError: '百度贴吧——全球最大的中文社区' != '娱乐明星_百度贴吧'
- 百度贴吧——全球最大的中文社区
+ 娱乐明星_百度贴吧
----------------------------------------------------------------------
Ran 2 tests in 35.273s
 
FAILED (failures=1)
 
Process finished with exit code 1

好了各位,以上就是这篇文章的全部内容了,能看到这里人啊,都是人才。
如果这个文章写得还不错,觉得我有点东西的话 求点赞 👍求关注 ❤️求分享 👥 对耿男我来说真的非常有用!!!
白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

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

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

相关文章

leetcode3. 无重复字符的最长子串 [滑动窗口]

题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释:…

蓝桥杯每日一题2023.10.17

迷宫 - 蓝桥云课 (lanqiao.cn) 题目描述 样例: 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001100110100101 01111011010010001000001101001011100011000000010000 0100000000101010001101000010100000101010101100…

视频批量添加背景图片教程,详细步骤一看就会

你是否曾经需要为多个视频添加相同的背景图片?或者你需要为一些视频添加自定义的背景来增强视觉效果?如果你遇到了这样的问题,那么有一个软件可以帮助你解决,那就是固乔剪辑助手。下面是一个简单的步骤指南,教你如何使…

如何快速定位BUG?BUG定位技巧及测试人员定位的N板斧

很多测试人员可能会说,我的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事? 好,我的回答是,如果您只想做一个测试人员最基本最本分的事情,那么可以这么想。但是&#…

基于边缘网关构建水污染监测治理方案

绿水青山就是金山银山,生态环境才是人类最宝贵的财富。但是在日常生活生产中,总是免不了各种污水的生产、排放。针对生产生活与环境保护的均衡,可以借助边缘网关打造环境污水监测治理体系,保障生活与环境的可持续性均衡发展。 水污…

数据结构-----红黑树(全)

目录 前言 一、什么是红黑树? 二、为什么需要红黑树?(与AVL树对比) 三、红黑树的特性 四、红黑树的储存结构 五、节点旋转操作 左旋(Left Rotation) 右旋(Right Rotation) 六、…

警惕!又2本Hindawi期刊被剔除,Scopus期刊目录更新!(附下载)

【SciencePub学术】 01Scopus目录更新概况 此次Scopus期刊目录更新后,有5本期刊不再被收录(Discontinued titles September 2023),同上次更新时相比,此次又新增93本期刊(Accepted titles)进入Scopus数据库。目前Scop…

Intelijj中报java版本错误

这次编译一个半年没动过的老项目,报了几次版本错误,通过多次尝试最终解决掉了该问题 错误一:Diamond types are not supported at language level 6 错误背景 该错误出现在intelijj中,打开项目后,下面的代码的后一个…

红海云签约COMMUNE,新兴餐饮行业加速人力资源数字化转型

COMMUNE是一家连锁餐酒吧品牌,将酒水自选区、超级吧台与经典就餐区三大功能板块有机融合,创建“复合商超零售经典西式餐饮”模式,是面向新中产阶层消费客群的全时段餐酒吧。 近日,连锁餐酒吧品牌COMMUNE母公司极物思维集团与红海…

C++ Builder 将运行时需要的库打进运行的程序包

一、打开【工程】–【选项】–【Linker】-- 设置【Use dynamic RTL】为 False 二、打开【工程】–【选项】–【组件包】-- 设置【和运行时组件包一起编译】为 False

Apipost使用介绍

相信无论是前端,还是后端的测试和开发人员,都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。 API管理的难点在哪? 开发人员在 …

Qt Creator编译含opencv的程序时报错libopencv_calib3d.so:-1: error: error adding symbols

错误信息: /home/lyc/Exe/opencv-3.4.16/opencv_install/lib/libopencv_calib3d.so👎 error: error adding symbols: File in wrong format 进入libopencv_calib3d.so所在的目录,利用file查看文件格式。 由于libopencv_calib3d.so最终软链接…

Nginx的代理和负载均衡

一、nginx的代理方式 1.1 七层代理 七层代理:基于http协议,对请求的内容进行处理,然后转发到后端服务器 七层代理是客户端请求代理服务器,由代理服务器转发客户端的http请求,转发到内部的服务器进行处理(服务器可以是…

搭建NGINX服务 如何统计网页访问量

一、搭建Nginx服务 搭建之前需要查看一下我们的内核数制 我们进行简单的内核优化 命令:ulimit -n 65535 安装Nginx服务 第一步 关闭防火墙和安全机制 systemctl stop firewalld #关闭防火墙 systemct disable firewalld #开机自动关闭防火墙 setenfor…

Netty-SocketIo 完美替换 nodejs 的 socketio

背景 前段时间接到一个任务,用Java重构一个nodejs项目,其中用到了websocket的功能了,在nodejs项目中用的是socketio框架来实现websocket的功能,前端对应的也使用了socketio jar包。 一开始对socketio的用法并不是很清楚&#xff…

Unity Ugui 顶点颜色赋值

一、效果图 如下图:图片和文字的颜色都可以渐变,透明度也可以渐变。 原理分析: 不管是图片Image或是文本Text,它们都是网络Mesh来渲染网格是由很多三角形组成,那么我们根据坐标修改三角形的颜色即可实现。 工程源码…

进阶JAVA篇-如何理解作为参数使用的匿名内部类与 Arrays 类的常用API(九)

目录 目录 API 1.0 Arrays 类的说明 1.1 Arrays 类中的 toString() 静态方法 1.2 Arrays 类中的 copyOfRange(int[] original, int from, int to) 静态方法 1.3 Arrays 类中的 copyOf(int[] original, int newLength) 静态方法 1.4 Arrays 类中的 setAll(do…

论文研读|TextBack: Watermarking Text Classifiers using Backdooring

目录 论文信息文章简介研究动机研究方法水印生成水印嵌入版权验证 实验结果保真度 & 有效性消融实验 方法评估相关文献 论文信息 论文名称:TextBack: Watermarking Text Classifiers using Backdooring 作者:Nandish Chattopadhyay, et al. Nanyang…

如何选择靠谱且适合自己的IC公司?(内附各大厂薪资加班情况分析)

近期,有不少同学私信手里有几个offer,却不知道该怎么选择 ?这着实令找不到工作的小伙伴们羡慕啊,今天IC修真院就来给大家分析一下如何选择靠谱且适合自己的IC公司 ? 目前市面上可选择的芯片公司有哪些? 关…

SLM6500 适用于单节锂电池充电芯片 2A同步降压型鲤电池充电电路

SLM6500 是一款面向5V交流适配器的2A离子电池充电器。它是采用1.5MH2固定频率的同步降压型转换器,因此具有高达90%以上的充电效率,自身发热量极小。 SLM6500包括完整的充电终止电路、自动再充电和一个精确度达土1%的4.2V预设充电电压&#xff0c…