Unittest - Python 使用总结

批量执行

一、UnitTest TestSuite 控制用例执行的顺序

UnitTest 框架默认 main() 方法根据 ASCII 码的顺序加载测试用例,数字与字母的顺序为:09,AZ,a~z

如果要让某个测试用例先执行,不能使用默认的 main() 方法,需要通过 TestSuite 类的 addTest() 方法按照一定的顺序来加载。

示例:

class TestCase01(unittest.TestCase):

    def setUp(self):
print("case开始执行") def tearDown(self):
print("case结束执行") @classmethod
def setUpClass(cls):
print("case类开始执行") @classmethod
def tearDownClass(cls):
pass @unittest.skip("这个case不像执行")
def test_07(self):
print("执行case07")
flag = "adfadfadfadfadsfaqeewr"
s = "fads"
self.assertIn(s, flag, msg="不包含") @unittest.skip("这个case不像执行")
def test_01(self):
TestCase01.a = 5
print("执行case01")
# res = requests.get(url=url,params=data).json()
data1 = {
"user": "11111"
}
self.assertDictEqual(data1, data) @unittest.skip("这个case不像执行")
def test_02(self):
print("----------------> 执行case02")
data1 = {
"username": "1111",
"password": "22222"
}
self.assertDictEqual(data1, data, msg="这两个字典不相等") @unittest.skip("这个case不像执行")
def test_03(self):
print("执行case03")
flag = True
self.assertFalse(flag, msg="不等于True") @unittest.skip("这个case不像执行")
def test_04(self):
print("执行case04")
flag = False
self.assertTrue(flag, msg="不等于False") @unittest.skipIf(host != "http://www.imooc.com", "这个case不执行")
def test_05(self):
print("执行case05")
flag = "111"
flag1 = "2222"
self.assertEqual(flag, flag1, msg="两个str不相等") def test_06(self):
res = request.run_main('get', url, data)
print(res) if __name__ == "__main__":
# unittest.main()# 默认顺序执行方式
suite = unittest.TestSuite()
'''
# TestSuite 控制执行顺序
suite.addTest(TestCase01('test_06'))
suite.addTest(TestCase01('test_04'))
suite.addTest(TestCase01('test_02'))
suite.addTest(TestCase01('test_05'))
suite.addTest(TestCase01('test_01'))
suite.addTest(TestCase01('test_07'))
runner = unittest.TextTestRunner()
runner.run(suite)
'''
# TestSuite 另一种写法
tests = [TestCase01('test_06'), TestCase01('test_02'), TestCase01('test_03'), TestCase01('test_05'),
TestCase01('test_01')]
suite.addTests(tests)#
runner = unittest.TextTestRunner()
runner.run(suite)

二、 使用 UnitTest TestLoader类 discover() 函数执行更多测试用例

Python Unittest discover() 方法与执行顺序补充

可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,让整体结构更加清晰

但通过addTest()添加、删除测试用例就变得非常麻烦

TestLoader 类中提供的 discover() 方法可以自动识别测试用例.py文件。

discover(start_dir,pattern='test*.py',top_level_dir= None)

找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名时才加载

  • start_dir:要测试的模块名或测试用例目录

  • pattern='test*.py':表示用例文件名的匹配原则。此处匹配以“test”开头的.py 类型的文件,* 表示任意多个字符

  • top_level_dir= None 测试模块的顶层目录,如果没有顶层目录,默认为None

实例1:

import unittest
test_dir = './'
#定义测试目录为当前目录
discover = unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(discover)

discover()方法会自动根据测试目录 test_dir 匹配查找测试用例文件,并将查找到的测试用例组装到测试套件中,因此,可以直接通过

run()方法执行 discover,大大简化了测试用例的查找与执行

实例2:

suite = unittest.TestSuite()
all_cases = unittest.defaultTestLoader.discover(PY_PATH,'Test*.py')
#discover()方法会自动根据测试目录匹配查找测试用例文件(Test*.py),并将查找到的测试用例组装到测试套件中
[suite.addTests(case) for case in all_cases]
report_html = BeautifulReport.BeautifulReport(suite)

参考: https://blog.csdn.net/happyuu/article/details/80683161

最新文章

  1. Android ListView ArrayAdapter 的简单使用
  2. 利用select实现年月日三级联动的日期选择效果
  3. Common Issues Which Cause Roles to Recycle
  4. NLP用CNN分类Mnist,提取出来的特征训练SVM及Keras的使用(demo)
  5. threejs构建web三维视图入门教程
  6. 【转】HBase 超详细介绍
  7. Tomcat7启动报Error listenerStart错误--转载
  8. Python串行运算、并行运算、多线程、多进程对比实验
  9. zabbix 飞信集成配置
  10. Struts2 初体验
  11. Eclipse 快捷键整理
  12. hi3531串口波特率计算
  13. WordPress中添加自定义评论表情包的方法
  14. CTBS问题百科
  15. [Swift]LeetCode797. 所有可能的路径 | All Paths From Source to Target
  16. kafka_2.11-2.1.0测试
  17. dvi文件和将dvi文件转换成pdf格式
  18. [JavaScript] 弹出编辑框
  19. IPerf——网络测试工具介绍与源码解析(4)
  20. C# List去重的三种方法(转)

热门文章

  1. swift 录音 AVAudioRecorder
  2. Docker部署NETCORE应用程序
  3. spring boot输入数据校验(validation)
  4. PTA天梯赛L2
  5. 进度3_家庭记账本App_Fragment使用SQLite实现简单存储及查询
  6. Ubuntu无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
  7. 如何向女朋友介绍MySQL索引
  8. Nginx无法监听虚拟VIP的问题报:99: Cannot assign requested address
  9. Django框架(八):视图(一) URLconf、视图
  10. EL表达式和JSTL(三)——EL表达式