unittest补充

1.用例执行的顺序

#test.py
#coding:utf-8
from Demo1 import Count
import unittest class TestBdd(unittest.TestCase): def setUp(self):
print "test TestBdd:" def test_ccc(self):
print "test ccc" def test_aaa(self):
print "test aaa" def tearDown(self):
pass class TestAdd(unittest.TestCase):
def setUp(self):
print "test TestAdd:" def test_add(self):
print "test bbb" def tearDown(self):
pass if __name__=="__main__":
unittest.main() 

运行后的结果如下图所示:

无论执行多少次,结果都是一样的,通过上面的结果,规律如下:
unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a-z。所以,TestAdd类会优先于TestBdd类被执行,test_aaa()方法会优先于test_ccc()被执行,因而它并没有按照用例从上到下的顺序执行。

对于测试目录和测试文件来说,unittest框架同样是按照这个规则来加载测试用例的。
那么可不可以让test_ccc()先执行?答案是肯定的,只是不能使用默认的main()方法了,而是需要通过TestSuite类的addTest()方法按照一定的顺序来加载。

#test.py
#coding:utf-8
import unittest class TestBdd(unittest.TestCase): def setUp(self):
print "test TestBdd:" def test_ccc(self):
print "test ccc" def test_aaa(self):
print "test aaa" def tearDown(self):
pass class TestAdd(unittest.TestCase):
def setUp(self):
print "test TestAdd:" def test_add(self):
print "test bbb" def tearDown(self):
pass if __name__=="__main__":
suite=unittest.TestSuite()
suite.addTest(TestBdd("test_ccc"))
suite.addTest(TestAdd("test_add"))
suite.addTest(TestBdd("test_aaa")) runner=unittest.TextTestRunner()
runner.run(suite)

执行结果如下所示:

现在的执行顺序就是addTest()方法所加载的顺序。Discover()的加载测试用例的规则与main()方法相同。所以,我们只能通过测试用例的名称来提高被执行的优先级。例如:将希望先被执行的测试用例命名为“test_a”,希望最后执行的测试用例命名为“test_z”。

2.执行多级目录的用例

要控制web用例的数量,但是当测试用例达到一定量级时,就要考虑划分目录,比如目录如下测试目录:
test_project/test_case/
--test_bbb/
------test_ccc/
---------test_c.py
------test_b.py
--test_ddd/
---------test_d.py
test_a.py
对于这个目录,如果将discover()方法中的start_dir参数定位为“./test_case/”目录,那么只能加载test_a.py文件中的测试用例。怎样让unittest框架查找到test_case/的子目录中的测试文件呢?方法很简单,在每个目录下放一个__init__.py文件。

最新文章

  1. 【统计学习】SVM之超平面方程来源
  2. WP7、WP8 格式化时间为距当前多少时间
  3. Swagger .Net配置
  4. Maven初学之经验浅谈
  5. ASP.NET学习路线图
  6. 滑动到底部或顶部响应的ScrollView实现
  7. Ajax数据格式,html,xml,json
  8. 注册AxtiveX控件
  9. 织梦dedecms|文章模型内容页标签
  10. JS复习:第十、十一章
  11. Segment,Path,Ring和Polyline对象
  12. 手机1520 win8.1升级win10
  13. 【转】如何将qlv格式的腾讯视频转换为mp4格式
  14. Writing Sentences [1]
  15. Python——Selenium & Chrome Driver配置
  16. Android手机插上usb能充电但不能识别的一种解决方法
  17. pycharm更新之后pip显示没有main
  18. Tag (input) should be an empty-element tag.
  19. c#加"\n\r"不换行,变成字符串
  20. 查看CPU信息

热门文章

  1. 用Nginx为多个http/socks代理做负载均衡(反向代理)
  2. C++ 内联函数 摘自 C++ 应用程序性能优化
  3. 身份证js正则
  4. libusb传输endpoint描述符
  5. c# 获取api 数据
  6. Nuxt 服务端渲染
  7. 运维堡垒机(跳板机)系统 python
  8. Luogu P3804 【模板】后缀自动机
  9. ASCII和UTF-8
  10. String,权限修饰符,方法,集合