首页 > 其他分享 >24-unittest简介

24-unittest简介

时间:2024-06-06 18:31:23浏览次数:27  
标签:24 __ 简介 unittest def main self 测试方法

一、unittest简介

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

二、示例程序

1)导入unittest模块
import unittest
2)使用help()函数查看源码中的示例程序
help(unittest)
Simple usage:

    import unittest

    class 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 unittest

class 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 unittest

class 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 unittest

class 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 time

class 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.title
        print(title)
        self.assertEqual(title, '百度一下')

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

标签:24,__,简介,unittest,def,main,self,测试方法
From: https://blog.csdn.net/zhangzhan0813/article/details/139473297

相关文章

  • 2024墨者杯哈希sha1绕过
    题目描述:某开发者发现这个页面好像不能正常访问<?phperror_reporting(0);if($_SERVER['REQUEST_METHOD']!=='POST'){header("HTTP/1.1405MethodNotAllowed");exit();}else{if(!isset($_POST['roam1'])||!isset($_PO......
  • 2024最新华为OD算法题目
    在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。请你统计机房中最大的局域网包含的服务器个数。输入描述第一行输入两个正整数,n和m,0<n,m<=......
  • 面向互联世界的AGFA027R24C2I2V、AGFA027R24C3E4X、AGFA027R24C2E3V、AGFA027R24C3I3V
    Agilex™FPGA产品组合包含一系列产品,可充分满足每一个技术领域(从边缘到嵌入式系统,再到通信和数据中心)的众多可编辑逻辑需求。在所有这些领域中,数据爆炸导致新产品需求激增,以便移动、处理和存储数据并从中获得可执行的深度分析。这些产品的开发人员需要硬件灵活性来应对不断变化......
  • 2024.6.6
    2024.6.6【一天高考!!!“夏天周而复始、该相逢的人会再相逢”】Thursday五月初一<theme=oi-"DP">来学习一下DP的优化其实考试时我应该很难用到优化的P2569[SCOI2010]股票交易DP柿子比较好推,T,Maxp都比较小,作为f数组的两维还是挺合理的。那么设f[i][j]为第i天,有j张......
  • acwing 242. 一个简单的整数问题
    https://www.acwing.com/problem/content/248/给定长度为N的数列A,然后输入M行操作指令。第一类指令形如Clrd,表示把数列中第l∼r个数都加d。第二类指令形如Qx,表示询问数列中第x个数的值。对于每个询问,输出一个整数表示答案。输入格式第一行包含两个整数N......
  • 2024-6-6 石群电路-25
    2024-6-6,星期四,15:56,天气:晴,心情:晴。今天又是阳光明媚的一天打印了毕业论文,准备了一些毕业&答辩的材料,感觉离毕业越来越近了,加油学习喽~今日观看了石群老师电路课程的第42和第43个视频,开始了第十章的学习,主要学习内容为:互感,含有耦合电感电路的计算并完成了相关例题;C语言方面开......
  • 锐捷校园网自助服务系统 login_judge.jsf 任意文件读取漏洞复现(XVE-2024-2116)
    0x01产品简介锐捷校园网自助服务系统是锐捷网络推出的一款面向学校和校园网络管理的解决方案。该系统旨在提供便捷的网络自助服务,使学生、教职员工和网络管理员能够更好地管理和利用校园网络资源。0x02漏洞概述校园网自助服务系统/selfservice/selfservice/module/scgroup......
  • I Doc View 在线文档预览 qJvqhFt.json 任意文件读取漏洞复现(XVE-2024-2115)
    0x01产品简介iDocView是一个在线文档解析应用,旨在提供便捷的文件查看和编辑服务。0x02漏洞概述iDocView是一个在线文档预览系统/view/qJvqhFt.json接口处存在任意文件读取漏洞,未授权的攻击者可以利用此接口并携带默认token读取服务器敏感文件信息,使系统处于极度不安全的......
  • 各家AI大胆帮我预测一下2024年全国高考语文作文 并模拟出题 坐看AI算的准不准
    chatgpt-4o抱歉,我无法预测具体的高考题目。不过,我可以根据近年的趋势和主题为你模拟一个可能的作文题目:2024年全国高考语文作文模拟题目:题目:《共同的家园》要求:以“共同的家园”为主题,写一篇文章。可以采用记叙、议论、描写等文体,自选角度。不少于800字。背景提示:在......
  • 文献收获_2024.06.06
    Ahmed,SyedRakin.2024.GeneratingClinicallyTranslatableAIModelsforCancerDiagnostics.Doctoraldissertation,HarvardUniversityGraduateSchoolofArtsandSciences.来源:https://nrs.harvard.edu/URN-3:HUL.INSTREPOS:37378697FIGURE4ModelZoo这部分......