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

运行测试用例时,需要判断用例是否执行成功,此时需要有一个我们期望的结果来进行验证。这里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 unittestclass Demo(unittest.TestCase):def test_01(self):self.assertEqual("demo","demo","两者不相等")
如果直接使用assert断言,则可以直接调用。
import unittestclass 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 sleepclass PcLogin(unittest.TestCase):@classmethoddef 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_handlesself.driver.switch_to.window(all[1])sleep(5)assert self.driver.title == "娱乐明星_百度贴吧", "断言失败,当前页面title是%s " % self.driver.titledef test_02_demo2(self):"""判断首页标题"""# 这个例子会断言失败self.assertEqual(self.driver.title, "娱乐明星_百度贴吧")def tearDown(self):print("测试完成")self.driver.close()@classmethoddef 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_demo2self.assertEqual(self.driver.title, "娱乐明星_百度贴吧")
AssertionError: '百度贴吧——全球最大的中文社区' != '娱乐明星_百度贴吧'
- 百度贴吧——全球最大的中文社区
+ 娱乐明星_百度贴吧
----------------------------------------------------------------------
Ran 2 tests in 35.273sFAILED (failures=1)Process finished with exit code 1
好了各位,以上就是这篇文章的全部内容了,能看到这里人啊,都是人才。
如果这个文章写得还不错,觉得我有点东西的话 求点赞 👍求关注 ❤️求分享 👥 对耿男我来说真的非常有用!!!
白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
相关文章:
Web自动化测试:测试用例断言!
运行测试用例时,需要判断用例是否执行成功,此时需要有一个我们期望的结果来进行验证。这里unittest中,如果一个case执行的过程中报错,或者我们判断结果不符合期望,就会判定此条用例执行失败,判断的条件主要…...
基于SSM的培训学校教学管理平台的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
2019年亚太杯APMCM数学建模大赛A题基于图像分析的二氧化硅熔化表示模型求解全过程文档及程序
2019年亚太杯APMCM数学建模大赛 A题 基于图像分析的二氧化硅熔化表示模型 原题再现 铁尾矿的主要成分是二氧化硅,而二氧化硅是铁尾矿成分中最难熔化的部分。因此,铁尾矿的熔融行为可以用二氧化硅的熔融行为来表示。然而,高温熔池的温度超过…...
C++之继承<2>【详解】
C之继承<2>【详解】 1. 派生类的默认成员函数1.1 1. 构造成员函数1.2 拷贝复制1.3 构造函数和析构函数的执行顺序 2. 继承和友元3. 继承与静态成员 1. 派生类的默认成员函数 1.1 1. 构造成员函数 派生类的构造函数必须调用基类的构造函数初始化基类的那…...
解决Kafka新消费者组导致重复消费的问题
问题描述:在使用Kafka时,当我们向新的消费者组中添加消费者时,可能会遇到重复消费的问题。本文将介绍一些解决这个问题的方法,帮助开发者更好地处理Kafka中的消费者组和消费偏移量。 Kafka是一个强大的分布式消息队列系统…...
公允价值会计(fair-value accounting)
《公允价值会计》是2008年经济科学出版社出版图书。 公允价值会计又称市值会计,是指以市场价值或未来现金流量的现值作为资产和负债的主要计量属性的会计模式。随着现代交通和通讯技术的发展,在工业社会中相互分割的市场正在走向世界一体化,…...
【java调取第三方接口,获取数据并保存至数据库】
java调取第三方接口,获取数据并保存至数据库 Overridepublic void doPost() {// 创建Httpclient对象CloseableHttpClient httpClient HttpClients.createDefault();CloseableHttpResponse response null;String resultString "";String url "htt…...
图论01-【无权无向】-图的基本表示-邻接矩阵/邻接表
文章目录 1. 代码仓库2. 图的基本表示的比较3. 邻接矩阵:Array和TreeSet3.1 图示3.2 Array主要代码解析3.3 测试输出3.4 使用TreeSet的代码 4. 邻接表:LinkedList4.1 图示4.2 LinkedList主要代码解析4.3 测试输出 5. 完整代码5.1 邻接表 - Array5.2 邻接…...
Bootstrap的列表组相关知识
目录 01-列表组的相关基础知识02-一个简单的列表组示例03-激活或禁用列表组的一行或多行04-设置列表项的颜色05-给列表项添加徽章 01-列表组的相关基础知识 Bootstrap的list-group是一个用于创建列表组件的CSS类,通常用于显示一个项目列表,如导航菜单或…...
Linux简单安装ffmpeg 实现用PHP压缩音频
一、下载安装 1、官方下载地址:Download FFmpeg 2、下载完上传到服务器然 然后解压就算安装完成了 tar -xf ffmpeg-git-amd64-static.tar.xz 3、然后配置一下全局变量(当然也可以不用配置 使用的时候带上文件路径就行) cd /usr/bin ln -s…...
Vue解决 npm -v 报错(一)
报错内容: npm WARN config global --global, --local are deprecated. Use --locationglobal instead. 解决方案: 代码: prefix -g 替换为: prefix --locationglobal 原创作者:吴小糖 创作时间:2023.1…...
IP地址是如何定位的
IP地址定位原理和方法 在互联网时代,了解设备或用户的地理位置对于各种应用和服务至关重要,从广告定向到网络安全。IP地址定位是一种常用的方法,允许确定IP地址背后的实际地理位置。本文将介绍IP地址定位的原理和方法。 IP地址基础…...
【分布式】入门级NCCL多机并行实践 - 02
# 背景知识 大模型和分布式训练对数据的吞吐量以及并行度都有很高的要求,NCCL就是在这个背景下诞生的。 如果你是一个只会写写Python,调用PyTorch和Horovod的算法萌新,可能对于分布式底层的东西不太了解,在下岗热潮中被主管逼着…...
Rust的模式匹配
文章目录 match匹配if let匹配 match匹配 match可以结合枚举使用,例如 enum IpVersion {V4,V6, }fn ParseIpVersion(version: IpVersion) -> String {match version {IpVersion::V4 > String::from("ipv4"),IpVersion::V6 > String::from(&quo…...
操作系统【OS】虚拟机
定义 使用虚拟化技术,将一台物理机器虚化为多台虚拟机器VM,每个虚拟机器都可用独立运行一个操作系统 分类 传统计算机 第一类VMM 第二类VMM...
不写代码、构建一个开源的 ChatGPT,总共需要几步?|Hugging News #1020
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息࿰…...
VBA操作数据库
相关背景: 对于数据分析同学,一般SQL,EXCEL是必备技能,但对于VBA和Python可能有的同学不会;在处理本地数据上(诸如excel、txt|csv文本),后续尝试使用VBA或者Python写一个sql查询的GUI界面&…...
【华为OD机试】HJ26 字符串排序
描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy 规则 2 :同一个英文字母的大小写同时存在时,…...
哈里斯鹰算法优化BP神经网络(HHO-BP)回归预测研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
摆动序列【贪心4】
题目 分析 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {if(nums.size() < 2) return nums.size();int ret 0,left 0,right 0;for(int i 0;i < nums.size()-1;i){right nums[i1] - nums[i];if(right 0) continue;if(left …...
Antigravity Workflows:让AI编程助手真正理解你的技术栈
1. 项目概述:为AI编程助手注入“灵魂”的智能工作流 如果你和我一样,每天都在和Claude、Cursor、GitHub Copilot这类AI编程助手打交道,那你肯定也经历过那种“鸡同鸭讲”的无力感。你让它“写个登录组件”,它可能给你生成一个Rea…...
基于AWS Agent-Squad框架构建多智能体协作系统的实践指南
1. 项目概述:当AI智能体组成“特工小队” 如果你最近在关注AI应用开发的前沿,特别是多智能体协作这个方向,那么 awslabs/agent-squad 这个项目绝对值得你花时间深入研究。简单来说,这是一个由AWS实验室(AWS Labs&…...
HyperAgent:基于LLM的智能浏览器自动化工具实战指南
1. 项目概述与核心价值如果你和我一样,曾经为了写一个网页自动化脚本,在Playwright或Puppeteer那冗长的选择器(Selector)和复杂的等待逻辑里挣扎过,那么HyperAgent的出现,绝对会让你眼前一亮。简单来说&…...
SDF 文件深度解析
从格式解读到反标注实战,一文搞懂时序仿真的灵魂文件| 数字后端工程师必读 | STA & GLS 实战 | 避坑指南 |01 你的门级仿真,有没有踩过这些坑?做了几年芯片,最怕的不是综合报warning,也不是PR跑不完——而是门级仿…...
P1832 A+B Problem(再升级)
记录110 #include<bits/stdc.h> using namespace std; long long dp[1010];//注意longlong bool f(int x){//判断素数 if(x<2) return false;for(int i2;i*i<x;i){if(x%i0) return false;}return true; } int main(){//完全背包 int n; cin>>n;dp[0]1;//d…...
从直线斜率到曲线切线的微积分解析
1. 从直线斜率到曲线切线的直观理解微积分中最迷人的概念之一,就是如何将直线的斜率概念延伸到曲线上。想象你正在山间徒步:走直线道路时,坡度始终不变;而沿着蜿蜒的山路行进时,每走一步面临的坡度都在变化。这正是直线…...
C++26 contracts正式进入ISO标准后,你还在用assert调试?:4类生产环境崩溃案例+合约启用黄金 checklist
更多请点击: https://intelliparadigm.com 第一章:C26 contracts正式进入ISO标准后,你还在用assert调试? C26 将首次将 contracts(契约)作为核心语言特性纳入 ISO 标准,标志着运行时断言&#…...
DeepSeek‑V4 预览版:1M 上下文暴打西方闭源模型阵营,GPT/Gemini 这次真有压力了
DeepSeek‑V4 预览版发布4 月 24 日,DeepSeek 正式发布新一代系列模型 DeepSeek‑V4 预览版,并同步开放 API 与开源权重,主打「1M 超长上下文 顶级推理 高性价比」。 这一代模型分为 DeepSeek‑V4‑Pro 和 DeepSeek‑V4‑Flash 两个版本&am…...
Delphi7 编译EXE报毒 Virus/Induc.a?一招根治(附详细步骤)
在使用 Delphi7 开发程序时,很多开发者会遇到一个棘手问题:编译生成的 EXE 运行时,被火绒、360 等杀毒软件拦截,提示“发现风险 Virus/Induc.a”,即便将 EXE 加入白名单,仍会拦截程序修改注册表、内存加载等…...
高压氢系统从里到外如何造?三层结构+双重密封详解
你或许时常于新闻之中听闻“氢能”、“新能源高压系统”这般的名词,然而针对其中最为关键的设备——以高压氢系统而言其内部的构造,大概依旧不太清楚。那什么是高压氢呢?它处于内部又是咋样组合的,并且依靠什么去保障安全呢&#…...
