当前位置: 首页 > news >正文

Selenium + Python 自动化测试10(unittest概念)

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上几篇我们讨论了元素的定位方法、操作方法以及一些特殊元素的操作。

         在实际的测试项目组中每个模块会写多条案例,如第一条用例那里我们的登录。登录的话就可以有多条案例。那我们怎么写才能更方便呢?python有没有自带的框架能够使用呢?

答案是肯定的。使用unittest来解决。

        还是以此网站来举例:Swag Labs

1、unittest基本结构

如下代码所示:

class LoginTest(unittest.TestCase):def setUp(self):self.driver = driverfunc()print("登录测试开始")#输入正确的密码登录成功测试def test_login_Y(self):driver = self.driverusername = "standard_user"password = "secret_sauce"print("登录的用户名是:%s,密码是:%s"%(username,password))#打开浏览器,并最大化driver.get("https://www.saucedemo.com/")driver.maximize_window()time.sleep(3)#输入用户名,driver.find_element_by_name("user-name").send_keys(username)  # by name 定位#输入密码driver.find_element_by_name("password").send_keys(password)  # by name 定位#点击登录按钮driver.find_element_by_id("login-button").click()  # by ID 定位time.sleep(3)#加入断言  //*[@id="header_container"]/div[1]/div[2]/div# 验证标题显示:Swag LabsUIResult = driver.find_element_by_xpath('//*[@id="header_container"]/div[2]/span').textself.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")def tearDown(self)#浏览器退出self.driver.quit()print("登录测试结束")if __name__ =='__main__':unittest.main()

        我们上面的代码已经使用了unitest。

         unittest 即单元测试,单元测试负责对最小的软件设计单元(模块)进行验证。有时候也叫白盒测试。这里unittest指单元测试框架,是python语言自带的。

基本结构:

 class LoginTest(unittest.TestCase):  #以登录为例这里写的类
    def setUp(self):   #测试用例执行前的初始化工作
        self.driver = driverfunc()
       
print("登录测试开始")

   
#实际的测试用例,每个模块一条用例写一个函数
   
def test_login_Y(self):
       
driver =
self.driver
    

       xxxx,下面一般是断言
        self.assertEqual("Products", UIResult, "密码正确登录验证失败,fail")

    def
tearDown(self)#与初始化工作相对应,执行一条用例后处理
       
self.driver.quit()
       
print("登录测试结束") 
 

2、多条用例的执行

         现在加入我用写了一条登录失败的用例,要怎么写呢?聪明的你可能会想到在写一个函数。如下即是我们新增的案例。

# 输入错误的密码登录失败测试def test_login_N(self):driver = self.driverusername = "standard_user"password = "secret_NG"print("登录的用户名是:%s,密码是:%s" % (username, password))# 打开浏览器,并最大化driver.get("https://www.saucedemo.com/")driver.maximize_window()time.sleep(3)# 输入用户名,driver.find_element_by_name("user-name").send_keys(username)  # by name 定位# 输入密码driver.find_element_by_name("password").send_keys(password)  # by name 定位# 点击登录按钮driver.find_element_by_id("login-button").click()  # by ID 定位time.sleep(3)# 加入断言  //*[@id="header_container"]/div[1]/div[2]/div# 验证有报错显示:UIResult = driver.find_element_by_xpath('//*[@id="login_button_container"]/div/form/div[3]/h3').textself.assertEqual("Epic sadface: Username and password do not match any user in this service", UIResult, "密码错误登录验证失败,fail")

执行我们整个脚本文件:login.py

检查执行的结果,我们确认执行了两条的测试案例,并且都是成功的。如下图:

        这个是为什么呢?因为unittest 提供了main()方法,使用它可以方便地将一个单元测试模块变成可以直接运行的测试脚本。main()方法使用TestLoader 类来搜索所包含在该模块中以test命名开通的测试方法,并自动执行它们。即:

        if __name__ =='__main__':
           
unittest.main()

以上就是unittest 一个简单的理解。

每天进步一点点,加油!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 科技文献笔记模版(自用)
  • 力扣爆刷第171天之TOP200五连刷121-125(跳跃游戏、买卖股票、旋转链表)
  • Zabbix自动导出PDF报告
  • k8s—Prometheus原理
  • Qt十多年的开发经验,无私奉献!
  • 127. Go反射基本原理
  • Vulkan 学习(3)---- Vulkan 物理设备和队列组
  • ARM编译器简介
  • C语言——查漏补缺
  • 手机CPU性能天梯图(2024年8月),含安兔兔/GB6/3DMark跑分
  • 架构师软考-每日两道单选题12
  • Java中的抽象类与接口
  • [Qt][布局管理器]详细讲解
  • 【Docker】Elasticsearch 8.12 安装与搭建
  • Python大数据分析——Kmeans聚类分析
  • 【译】JS基础算法脚本:字符串结尾
  • Apache Pulsar 2.1 重磅发布
  • CentOS6 编译安装 redis-3.2.3
  • ERLANG 网工修炼笔记 ---- UDP
  • fetch 从初识到应用
  • JavaScript创建对象的四种方式
  • JAVA之继承和多态
  • JS+CSS实现数字滚动
  • linux学习笔记
  • MySQL的数据类型
  • React-生命周期杂记
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue--为什么data属性必须是一个函数
  • Zsh 开发指南(第十四篇 文件读写)
  • 爱情 北京女病人
  • 翻译:Hystrix - How To Use
  • 回流、重绘及其优化
  • 前嗅ForeSpider采集配置界面介绍
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何优雅地使用 Sublime Text
  • 时间复杂度与空间复杂度分析
  • 学习HTTP相关知识笔记
  • 转载:[译] 内容加速黑科技趣谈
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 7行Python代码的人脸识别
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • # 飞书APP集成平台-数字化落地
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (3)STL算法之搜索
  • (C语言)球球大作战
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (篇九)MySQL常用内置函数
  • (四)Controller接口控制器详解(三)
  • (五)关系数据库标准语言SQL
  • (学习日记)2024.02.29:UCOSIII第二节