首页 > 编程语言 >python自动化之unittest

python自动化之unittest

时间:2023-04-12 17:47:03浏览次数:46  
标签:python unittest 用例 测试用例 自动化 test Mytest1 self

一、官方文档:

https://docs.python.org/zh-cn/3/library/unittest.html

二、unittest使用

  • unittest 使用规范

    需要导入unittest包
    测试类必须继承unittest.TestCase类
    测试方法必须要以test开头
    测试用例名称不能相同,相同的情况可能出现用例遗漏执行的情况
    ddt使用事项见下方
    
    • unittest中提供了前置、后置处理,及用例跳过功能,直接见下面代码【新建Mytest1.py】

      import unittest
      
      # 这个Mytest1 可以称为 test case(测试单元),包含测试前,测试,测试后的执行顺序
      class Mytest1(unittest.TestCase):
          def setUp(self) -> None:
              """
              当前类下,每条用例的前置
              """
              print("====setUp")
      
          def tearDown(self) -> None:
              """
              当前类下,每条用例的后置
              """
              print("====tearDown")
      
          @classmethod
          def setUpClass(cls) -> None:
              """
              当前类下,第一个执行,只执行一次
              """
              print("====setUpClass")
      
          @classmethod
          def tearDownClass(cls) -> None:
              """
              当前类下,最后一个执行,只执行一次
              """
              print("====tearDownClass")
      
          def test_one(self):
              """
              测试用例,需要以test开头
              """
              print("测试用例-test_one")
              self.assertEqual(1, 2)
      
          def testTwo(self):
              """
              测试用例,需要以test开头
              """
              print("测试用例-testTwo")
              self.assertEqual(1, 1)
      
          def tthree(self):
              """
              未以test开头,无法加载
              """
              print("测试用例-tthree")
      
          @unittest.skip("直接跳过")
          def test_four(self):
              """
              需要跳过的用例
              测试用例,需要以test开头
              """
              print("测试用例-test_one")
              self.assertEqual(1, 2)
      
          @unittest.skipIf(1 == 1, "条件为true跳过")
          def test_five(self):
              """
              需要跳过的用例
              测试用例,需要以test开头
              """
              print("需要跳过的用例")
              self.assertEqual(1, 2)
      
          @unittest.skipUnless(1 > 2, "条件为false跳过")
          def test_six(self):
              """
              需要跳过的用例
              测试用例,需要以test开头
              """
              print("需要跳过的用例")
              self.assertEqual(1, 2)
      
      
      if __name__ == '__main__':
          unittest.main(verbosity=2)
          """
          0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共10个 失败2 成功8
          1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
          2 (详细模式):测试结果会显示每个测试用例的所有相关的信息
          """
          # 命令行方式
          # python -m unittest Mytest1.py
      
      点击查看运行结果
      ====setUpClass
      ====setUp
      测试用例-testTwo
      ====tearDown
      ====setUp
      测试用例-test_one
      ====tearDown
      ====tearDownClass
      testTwo (__main__.Mytest1) ... ok
      test_five (__main__.Mytest1) ... skipped '条件为true跳过'
      test_four (__main__.Mytest1) ... skipped '直接跳过'
      test_one (__main__.Mytest1) ... FAIL
      test_six (__main__.Mytest1) ... skipped '条件为false跳过'
      
      ======================================================================
      FAIL: test_one (__main__.Mytest1)
      ----------------------------------------------------------------------
      Traceback (most recent call last):
      File "D:/WorkSpace/PythonWorkSpace/test_unit/Mytest1.py", line 45, in test_one
          self.assertEqual(1, 2)
      AssertionError: 1 != 2
      
      ----------------------------------------------------------------------
      Ran 5 tests in 0.000s
      
      FAILED (failures=1, skipped=3)
      

    • 关于跳过及断言的方法可以参考顶部官方文档

    • 关于自动化代码运行有两种方式:编辑器 和 命令行(命令行更加详细的指令可以参考官方文档)
      • 注意:前两张图是通过编辑器运行的,操作方式不同展示效果不同,注意区分

标签:python,unittest,用例,测试用例,自动化,test,Mytest1,self
From: https://www.cnblogs.com/N-A-N/p/17310569.html

相关文章

  • python关于*args所能接收的参数、关于**kwargs所接收的参数详解
    1#!/usr/bin/envpython2#-*-coding:utf8-*-3#python-day32-20170110:456#关于*args所能接收的参数78#这种接收的是位置参数,可变长9deffunc1(*args):10print(args,type(args))1112#传入位置参数可以被args所接收,以元组的形式来保存......
  • 服务器节点之间 如何实现自动化文件同步?
    大数据、云计算、物联网的发展,使得企业能够拥有的数据急剧增加。面对快速变化和增长的庞大数据,如何高效地管理、利用数据对于企业来说至关重要。但是,数据传输模式单一、自动化程度低、传输效率低下等难题,阻碍着企业对其数字资产的管控和利用,也制约了企业运营效率的提升。 很显......
  • python get请求抓取网页
    importrequestsurl='https://www.douban.com/search?'#req=requests.get(url)headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/94.0.4606.81Safari/537.36......
  • Python 环境迁移
    平时用python环境会装一堆依赖,也包括自己的模块,要迁移到陌生环境,得好好处理才行。下面介绍个方法,实践过还可以:总结下步骤:miniconda或conda安装一个python环境,python版本最好和后面新环境一样。condacreate-nszpython=3.6.8在该conda里面装好自己的各种依赖,并跑起来。pi......
  • linux下使用pyinstaller打包python脚本
    最近给运维写一个系统维护的python脚本,但是被告知生产环境有很多服务器没有安装python解释器,于是在网上搜索多pyinstaller解决方案,本文简单记录之。下载pyinstaller。最新的pyinstaller版本为2.0版本,官方网站http://www.pyinstaller.org。下载链接:http://jaist.dl.sourceforge......
  • 在docker安装Python环境提供给其他docker使用
    1.在宿主机新建一个目录2.在app目录下新建一个Dockerfile文件本文永久更新地址:1.在宿主机新建一个目录在宿主机上新建一个目录如app/,在app目录里面导入项目需要依赖的包在项目根目录下输入命令,导出python项目所有的依赖包pipfreeze>requirements.txt把导出的re......
  • Python json基本使用json.dumps() 和json.loads()
    Python中json的基本使用 json.dumps()和json.loads()JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式,现在也常用于http请求中。Python中可用json模块来......
  • 设置jupyter notebook的python environment
    (base)$condainstallnb_conda_kernels(base)$condacreate--namenew-env(base)$condaactivatenew-env(new-env)$condainstallipykernel(base)$condadeactivate(base)$jupyternotebookclickkernel,selectchangekernel,youwillseeyourenviro......
  • python爬虫(四):文本、图片、视频爬取实例
    上篇讲了常用的python爬虫工具,可以快速支撑我们数据的爬取--解析--分析,这里将拆解几个爬虫程序实例进行学习,实例来自于https://cuijiahua.com/blog/2020/04/spider-6.html的系列教程或者其他小爬虫;一、文本图表数据抓取(编程语言排名)#!/usr/bin/envpython#coding:utf-8importr......
  • python中的pandas小试
    在实习的项目中,得到宽表后的后续工作是用R语言写的,包括数据探索,数据清洗,建模,模型分析。因为之前用过python,写过简单爬虫,就想着自己试着将R语言的脚本写成python,或许对于未来有帮组、然而,在pyhon3.5连接teradata的问题上一直搞不通、、、所以,只能先学一下pandas之类的基础了,本来想法......