1.用例执行顺序

unittest默认会按照ascii码的顺序,依次执行。类名——方法名排序,使用discover也是默认排序。如果不想使用默认排序,就使用testsuite测试集的方式。

import unittest
class TestB(unittest.TestCase):
def setUp(self):
print("class B start")
def testC(self):
print("func c")
def testA(self):
print("func a ")
def tearDown(self):
print("class B end")
class TestA(unittest.TestCase):
def setUp(self):
print("class A start")
def testB(self):
print("func b")
def tearDown(self):
print("class A end")
if __name__=="__main__":
unittest.main()

discover,新建runtest.py文件

import unittest
test_dir="./"
discover=unittest.defaultTestLoader.discover(test_dir,pattern="testorder.py")
if __name__=="__main__":
runner=unittest.TextTestRunner()
runner.run(discover)

suite

if __name__=="__main__":
suite=unittest.TestSuite()
suite.addTest(TestB("testA"))
suite.addTest(TestA("testB"))
suite.addTest(TestB("testC")) runner = unittest.TextTestRunner()
runner.run(suite)

2.多级目录

执行多级目录,只需要在每个子目录下面添加__init__文件即可



test_a.py

import unittest
class TestA(unittest.TestCase):
def setUp(self):
pass
def test(self):
print("A")
def tearDown(self):
pass

test_b,test_c,test_d只是将test中输出更改为B C D

runtest.py

import unittest
test_dir="./"
discover=unittest.defaultTestLoader.discover(test_dir,pattern="test*.py")
if __name__=="__main__":
runner=unittest.TextTestRunner()
runner.run(discover)

3.装饰器:跳过测试和执行失败

运行测试时,需要跳过某些测试用例,或预期失败,此时unittest提供了装饰器来实现这些需求。

装饰器同样适用于类

装饰器 说明
unittest.skip(原因) 无条件的跳过测试
unittest.skipIf(条件, 原因) 如果条件为真,就跳过测试;否则执行测试
unittest.skipUnless(条件, 原因) 如果条件为真,就执行测试;否则跳过测试
unittest.expectedFailure 预期失败。执行结果失败,pass;执行结果成功,fail
import unittest
class MyTest(unittest.TestCase):
@unittest.skip("直接跳过test_skip")
def test_aaa(self):
print("直接跳过test_aaa\n")
@unittest.skipIf(3>2,"条件为true时,跳过test_skipIf")
def test_bbb(self):
print("跳过test_bbb\n")
@unittest.skipUnless(3>2,"条件为true时,执行测试test_skipUnless")
def test_ccc(self):
print("执行测试test_ccc\n")
@unittest.expectedFailure
def test_ddd(self):
print("test_ddd执行完毕\n")
@unittest.expectedFailure
def test_eee(self):
self.assertEqual(2,3)
if __name__=="__main__":
unittest.main()

4.fixtures

除了用例的fixtures,unittest还提供了更大范围的fixtures,如针对模块和类的

  • setUpModule/tearDownModule:在整个模块的开始于结束是被执行
  • setUpClass/earDownClass:在测试类的开始与结束时被执行
  • setUp/tearDown:在测试用例的开始与结束时被执行
import unittest
def setUpModule():
print("模块:初始化")
def tearDownModule():
print("模块:销毁")
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("类:初始化")
@classmethod
def tearDownClass(cls):
print("类:销毁")
def setUp(self):
print("用例:初始化")
def tearDown(self):
print("用例:销毁")
def test_case1(self):
print("用例1执行")
def test_case2(self):
print("用例2执行")
if __name__=="__main__":
unittest.main()

最新文章

  1. WebService技术(一)
  2. .NET 类型(Types)的那些事
  3. CentOS7中DHCP配置
  4. js图形网站
  5. 【HTTP】WireShark中获取Content-Encoding: gzip时的响应内容
  6. Python设计模式——观察者模式
  7. HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-ISAPI-4.0_32bit”在其模块
  8. Navicat for MySQL导出表结构脚本的方法
  9. echarts常见配置项总结,legend、toolbox、tooltip等
  10. SQL STUFF函数 拼接字符串 多列 合并成一列 转
  11. Hessian 使用例子
  12. 【洛谷p1507】NASA的食物计划
  13. elasticsearch mapping demo
  14. css设计并排布局
  15. 关于阅读JDK源码的准备
  16. c#null值加法运算
  17. 如何做好一个优秀的web项目心得
  18. vue-cli配置axios,并基于axios进行后台请求函数封装
  19. iptables详解(6):iptables扩展匹配条件之’–tcp-flags’
  20. 图片验证码——base64编码的使用

热门文章

  1. [转]CentOS 6和CentOS 7防火墙的关闭
  2. vs2010将写好的软件打包安装包经验
  3. ztree树形菜单的增加删除修改和换图标
  4. matlab学习笔记 函数bsxfun repmat
  5. 如何快速切换目录cd-linux
  6. 思维题(两点逼近)LeetCode11 Container with Most Water
  7. 设置tab标签页 遮挡部分
  8. 剑指offer-第一个只出现一次的字符-字符串和数组
  9. 时间操作(JavaScript版)—页面显示格式:年月日 上午下午 时分秒 星期
  10. 使用 C# 编写简易 ASP.NET Web 服务器 ---- 模拟IIS的处理过程