Python Unittest之加载及跳过测试方法和示例

发表于:2017-5-10 16:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:苦叶子    来源:简书

  前言
  在python unittest框架中,内置了用例加载及跳过的标准函数。
  其加载用例通过TestLoader类实现,而跳过测试方法则通过unittest.skip()类实现。下面我们一起来学习下。
  TestLoader加载用例
  TestLoader类有一个discover()函数,简洁的实现了从指定顶层目录、模块等加载测试用例
  将下述代码保存至==test==_disvover.py中
# _*_ coding:utf-8 _*_
__author__ = '苦叶子'
import unittest
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
# 被测函数
def add(a, b):
return a + b
# 测试用例
class demoTest(unittest.TestCase):
def test_add_4_5(self):
print u"测试 discover 命令"
self.assertEquals(add(4,5),9)
  切换至==test==_disvover.py所在目录,在命令行中执行一下命令:
  python -m unittest discover
  执行结果如下:
  
discover.png
  通过该命令,unittest测试框架会尝试在当前目录及其子目录加载所有满足要求的测试(==注意:所有的用例模块应该以test开头进行命名==,默认加载test开头的模块)
  下面我们一起看下其他相关的命令
  例如我们指定C:\test下,匹配assert开头的所有测试模块
  python -m unittest -v -s "c:\\test" -p "assert*.py"
  这个命令将加载C:\test目录下所有assert开头的测试模块中的测试方法
  unittest.skip跳过测试方法
  python unittest测试框架从python2.7开始支持设置跳过指定的测试方法或是跳过满足某种条件的测试用例。
  下面我看一个强制跳过指定的测试用例的示例:
  # _*_ coding:utf-8 _*_
  __author__ = '苦叶子'
  import unittest
  import sys
  reload(sys)
  sys.setdefaultencoding("utf-8")
  # 被测函数
  def add(a, b):
  return a + b
  class demoSkipTest(unittest.TestCase):
  @unittest.skip(u"强制跳过示例")
  def test_add(self):
  self.assertEqual(add(4,5), 9)
  def test_add_2(self):
  self.skipTest("强制跳过示例2")
  self.assertEqual(add(4,5), 9)
  if __name__ == '__main__':
  unittest.main()
  将上述代码保存至demoskip.py,运行下述命令:
  python demoskip.py
  结果如下:
  
demoskip.png
  下面我们一起看下各种skip方法说明
  下面我们一起看下各种方式实践的示例
# _*_ coding:utf-8 _*_
__author__ = '苦叶子'
import unittest
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
class demoSkipTest(unittest.TestCase):
a = 50
b = 20
def test_add(self):
"""加法"""
result = self.a + self.b
self.assertEqual(result, 40)
@unittest.skipIf(a>b, u"a>b就跳过")
def test_sub(self):
"""减法"""
result = self.a - self.b
self.assertTrue(result == -30)
@unittest.skipUnless(b==0, u"除数为0,则跳转")
def test_div(self):
"""除法"""
result = self.a / self.b
self.assertTrue(result == 1)
@unittest.expectedFailure
def test_mul(self):
"""乘法"""
result = self.a * self.b
self.assertTrue(result == 0)
if __name__ == "__main__":
unittest.main()
  将上述代码保存至demo_skip_test.py,运行结果如下
  
allskip.png
  总结
  本次就用例加载及如何跳过某些测试方法或用例进行了分享,大家可以基于上述示例代码进行改造学习和实践。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号