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

24-unittest简介

一、unittest简介

        unittest是Python中常用的单元测试框架,与Java中的Junit单元测试框架类似。

二、示例程序

1)导入unittest模块
import unittest
2)使用help()函数查看源码中的示例程序
help(unittest)
Simple usage:import unittestclass IntegerArithmeticTestCase(unittest.TestCase):def testAdd(self):  # test method names begin with 'test'self.assertEqual((1 + 2), 3)self.assertEqual(0 + 1, 1)def testMultiply(self):self.assertEqual((0 * 10), 0)self.assertEqual((5 * 8), 40)if __name__ == '__main__':unittest.main()
3)示例程序解析
  • 第一行是导入unittest模块。
  • class这一行是定义了一个测试类,并继承unittest.TestCase类。
  • 接下来是定义了两个测试方法:testAdd和testMultiply。这里的注释很重要:测试方法的名称要以test开头。
  • 方法中是断言assert,断言其实就是拿实际结果和期望结果去对比。这里使用的是assertEqual断言方法,用来判断两个元素是否相等,方法中可以写多个断言
  • unittest.main()是运行主函数,运行后会看到如下测试结果:

三、简单用法

        上面的示例程序中是加法和乘法,我们可以添加测试方法来测试一下减法和除法。

import unittestclass Demo(unittest.TestCase):def testMinus(self):self.assertEqual((5 - 2), 3)def testDiv(self):self.assertEqual((5 / 2), 2)if __name__ == '__main__':unittest.main()

        运行代码,第二个测试方法是失败的,失败原因:AssertionError: 2.5 != 2。

四、前置和后置

1)setUp:在写测试方法时,每次操作都需要先打开浏览器输入对应网址,这些操作就是执行测试方法的前置条件。

2)tearDown:测试方法执行完毕后,为了不影响下一个测试方法的执行,一般需要有数据还原的过程,这就是执行测试方法的后置条件。

3)前置条件和后置条件都是非必要,如果没有可以写pass。

4)很多人执行完测试方法后,不去做数据还原,导致下一个测试方法执行失败,这就是不喜欢擦屁股的坏习惯。

import unittestclass Demo(unittest.TestCase):def setUp(self):print('setUp')def tearDown(self):print('tearDown')def testMinus(self):print('testMinus')self.assertEqual((5 - 2), 3)if __name__ == '__main__':unittest.main()

五、测试类的运行方式

import unittestclass Test(unittest.TestCase):def test01(self):print('test01 start')self.assertEqual(1, 1)print('test01 end')def test02(self):print('test02 start')self.assertEqual(1, 2)print('test02 end')if __name__ == "__main__":print('测试开始~')unittest.main()

注:当测试方法中断言失败,后续的代码将不会执行。test02方法断言会失败,后续的打印语句将不会执行。

1)右键,选择 Run 'Unittests in .... ' 执行

        这种方式是以pycharm的unittest运行模式执行测试类,不会执行 if 条件下的代码,将 if 代码块去掉,也能执行所有的测试方法。

2)添加配置,以普通.py文件执行

3)添加配置,以pycharm的unittest运行模式执行

六、案例演示

        以打开百度搜索页为例,判断title是否完全等于期望结果。

from selenium import webdriver
import unittest
import timeclass Demo(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.get('https://www.baidu.com')time.sleep(3)def tearDown(self):time.sleep(1)self.driver.quit()def testTitle(self):title = self.driver.titleprint(title)self.assertEqual(title, '百度一下')if __name__ == '__main__':unittest.main()
http://www.lryc.cn/news/365005.html

相关文章:

  • Kotlin 中,扩展函数(Extension Functions)
  • 堪称2024最强的前端面试场景题,让419人成功拿到offer
  • 使用node将页面转为pdf?(puppeteer实现)
  • 龙迅#LT8711H支持TYPE-C/DP/EDP转HDMI功能应用,分辨率支持 1080p@60Hz,芯片内置固件!
  • WPF中Ignorable
  • 系统安全及应用11
  • vue中SKU实现
  • 闭眼推荐的,新手教师工具
  • charles抓包工具之---添加vConsole
  • Java多线程-初阶1
  • C++二级指针的指向与解引用
  • Pandas处理时间差的4种表达方式
  • C语言---指针part2
  • DNS域名
  • 19 - 查询结果的质量和占比(高频 SQL 50 题基础版)
  • 一次挖矿病毒的排查过程
  • 【JMeter接口测试工具】第二节.JMeter基本功能介绍(上)【入门篇】
  • ultralytics solutions快速解决方案,快速实现某些场景的图像解决方案
  • iphone突然黑屏?3种方法解决问题!
  • nn.GRU和nn.GRUCell区别
  • Coolmuster Android助手评测:简化Android到电脑的联系人传输
  • 【杂记-webshell恶意脚本木马】
  • 锻炼 精读笔记 01
  • 基于pytorch的车牌识别
  • 红酒:如何避免红酒过度氧化
  • FreeRTOS学习笔记-基于stm32(9)信号量总结(二值信号量、计数型信号量、互斥信号量、优先级翻转、优先级继承)
  • 归并排序——二路归并排序
  • java-StringBuilder
  • 数据结构 | 超详细讲解七大排序(C语言实现,含动图,多方法!)
  • 企业自建邮件系统的优势,安全性更高,功能更灵活,维护更便捷