测试用例执行顺序

1.setUp和tearDown相关

setUp:表示前置条件,它在每一个用例执行之前必须会执行一次 
      setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。
tearDown:表示释放资源,它在每次用例执行完之后会执行一次
tearDown可以理解为我们测试完毕后,需要关闭浏览器。
 

2.默认执行顺序

类内的普通方法执行顺序会默认按方法的字母asc码大小执行
import unittest
class myTest(unittest.TestCase):
def setUp(self):
print("前置测试条件")
def tearDown(self):
print("后置测试条件")
def test02(self):
print("普通方法1")
def test01(self):
print("普通方法2")
if __name__ == '__main__':
unittest.main()
执行结果:

(1)setUp和tearDown每执行一个方法就要执行一次
(2)普通方法的执行顺序会按方法名的asc码大小从小的开始执行
一般情况下测试用例会根据方法名的asc码大小从小的开始执行,这是最基本的执行方式也是最大的执行方式
 

3.TestSuite套件的使用

TestSuite可以使得用例按添加的顺序执行,先添加的先执行,后添加的后执行
使用方法:
(1)先初始化测试套件: suite=unittest.TestSuite()
(2)把测试用例添加到测试集合中: suite.addTest(类名("方法名"))
(3)执行测试用例: unittest.TextTestRunner().run(suite)

import unittest
class myTest(unittest.TestCase):
def test_f1(self):
print("普通方法1")
def test_f2(self):
print("普通方法2")
def test_f3(self):
print("普通方法3")
if __name__ == '__main__':
suite=unittest.TestSuite()
suite.addTest(myTest("test_f1"))
suite.addTest(myTest("test_f2"))
suite.addTest(myTest("test_f3"))
unittest.TextTestRunner().run(suite)
执行的结果是:

但是有一种情况,当使用了TestSuite套件,但是方法名的asc码大小又是跟添加的顺序相反的时候,会优先按方法名asc码从小到大执行,此时TestSuite套件会失效

import unittest
class myTest(unittest.TestCase):
def test_c(self):
print("普通方法1")
def test_b(self):
print("普通方法2")
def test_a(self):
print("普通方法3")
if __name__ == '__main__':
suite=unittest.TestSuite()
suite.addTest(myTest("test_c"))
suite.addTest(myTest("test_b"))
suite.addTest(myTest("test_a"))
unittest.TextTestRunner().run(suite)
执行的结果是:

4.类执行方式

类执行方法可以避免多次添加suite.addTest
用法:实例化suite时,添加一个makesuite, suite=unittest.TestSuite(unittest.makesuite(类名))

import unittest
class myTest(unittest.TestCase):
def test_01(self):
print("普通方法1")
def test_02(self):
print("普通方法2")
def test_03(self):
print("普通方法3")
if __name__ == '__main__':
suite=unittest.TestSuite(unittest.makesuite(myTest))
unittest.TextTestRunner().run(suite)
执行结果:

5.按加载模块来执行

一般一个模块有多个类时,同时想执行该模块所有类中的方法,就用加载模块
用法:suite=unittest.TestLoader().loadTestsFromModule("模块名.py")
import unittest
class myTest(unittest.TestCase):
def test_01(self):
print("普通方法1")
def test_02(self):
print("普通方法2")
def test_03(self):
print("普通方法3") class myTest02(unittest.TestCase):
def test_mytest01(self):
print("类test_mytest01的方法01")
def test_mytest02(self):
print("类test_mytest01的方法02") if __name__ == '__main__':
suite=unittest.TestLoader().loadTestsFromModule("unit01.py")
unittest.TextTestRunner(verbosity=2).run(suite)
执行结果:

最新文章

  1. Java RuntimeException异常处理汇总
  2. nginx 启动/停止/重启 BAT
  3. webqq协议请求交互过程
  4. FZU Problem 2136 取糖果
  5. aix 文件大小相关查询
  6. Partition算法剖析
  7. locate 不能使用
  8. Android 之数据存储(sdCard,sharedPreference,sqlite数据库)
  9. gitlab10.0安装手记
  10. 网络-02-端口号-linux端口详解大全
  11. UVALive - 3942 (字典树)
  12. [Flutter] 写第一个 Flutter app,part1 要点
  13. Xposed+JustTrustMe+Android
  14. 深度优先搜素之N皇后问题
  15. cocos creator 的scorllview 滑动事件和 子内容触摸事件会产生冲突
  16. maven 打包不同环境
  17. Web图形开发
  18. RDO部署多节点OpenStack Havana(OVS+GRE)
  19. SQL Server性能监控常用语句
  20. python统计文本中每个单词出现的次数

热门文章

  1. JAVA并发工具类---------------(Fork/Join)
  2. sqlserver 登录记录(登录触发器)
  3. 转-C++内联函数与宏定义区别
  4. mysql怎样更改密码和用户名
  5. 4.2 react patterns(转)
  6. HTML5自定义属性的设置与获取
  7. RQNOJ PID4 数列
  8. SQL中Truncate语法
  9. angularJS 上传multipart/form-data
  10. java MySQl数据库连接