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

Unittest - Python 使用总结的更多相关文章

  1. Unittest + python

    Unittest简单应用 #_*_coding:utf8_*_ import unittest from selenium import webdriver import time class Tes ...

  2. unittest (python标准库-开发工具-单元测试框架)

    unittest官方文档摘录 翻译 reffer to: https://docs.python.org/3/library/unittest.html#unittest.TextTestRunner ...

  3. <自动化测试>之<使用unittest Python测试框架进行参数化测试>

    最近在看视频时,虫师简单提到了简化自动化测试脚本用例中的代码量,而python中本身的参数化方法用来测试很糟糕,他在实际操作中使用了parameterized参数化... 有兴趣就查了下使用的方法,来 ...

  4. 在pycharm进行单元测试(unittest python)

    在Edit Configuration中添加Python test 选中相应的脚本或者文件夹 # coding:utf-8 import unittest import requests from c ...

  5. Appium+unittest+python登录app

    代码: # coding=utf-8 from appium import webdriver import time import unittest import os import HTMLTes ...

  6. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

      测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计,框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求 ...

  7. python学习笔记:unittest单元测试

    单元测试:开发自测时写的代码 unittest基本原理: ♦整个平台的搭建使用的是python的unittest测试框架,这里简单介绍下unittest模块的简单应用. ♦unittest是pytho ...

  8. python学习笔记(27)-unittest单元测试-测试用例

    单元测试 #单元测试 #unittest+接口 unittest python自带 pytest+jenkins+allure #接口测试的本质 就是测试类里面的函数 #单元测试的本质 测试函数 代码 ...

  9. Python测试框架对比----unittest, pytest, nose, robot framework对比

    什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求,记录日志, ...

随机推荐

  1. 体验京东云 Serverless+AI 人脸属性识别

    云原生计算基金会CNCF(Cloud Native Computing Foundation, CNCF)Serverless Whitepaper v1.0对无服务器计算作了如下定义: Server ...

  2. C#类、对象、方法和属性详解

    C#类.对象.方法和属性详解 一.相关概念: 1.对象:现实世界中的实体(世间万物皆对象) 2.类:具有相似属性和方法的对象的集合 3.面向对象程序设计的特点:封装 继承 多态 4.对象的三要素:属性 ...

  3. java使用mongoTemplate去重排序查询

    import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.c ...

  4. jQuery实现轮播图--入门

    jQuery是一个前台的框架. 主要函数: setInterval 语法:setInterval(code,millisec[,"lang"]) cdoe:需要执行的代码或者要调用 ...

  5. h5-动画基本介绍

    1.介绍 *{ ; ; } div{ width: 200px; height: 200px; background-color: #5aff61; /*添加动画效果*/ /*1.animation- ...

  6. Python说文解字_杂谈09

    1. 元类编程代码分析: import numbers class Field: pass class IntField(Field): # 数据描述符: # 初始化 def __init__(sel ...

  7. iOS 修改默认 UserAgent

    User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. UIWebView修改UserAgent UI ...

  8. (2)关于opencv解压

    关于opencv解压,一定不能解压到你的C盘的 ProgramFile(x86)中,不然,你肯定不会成功,你要放在C盘的其他文件夹,或者是别的盘中 就是因为这一个错误,我弄了一天,哎哎,时间宝贵啊

  9. Vue 源码学习(1)

    概述 我在闲暇时间学习了一下 Vue 的源码,有一些心得,现在把它们分享给大家. 这个分享只是 Vue源码系列 的第一篇,主要讲述了如下内容: 寻找入口文件 在打包的过程中 Vue 发生了什么变化 在 ...

  10. 计算机utf-8/gbk/utf-16对照表

    GBK   UTF-16 UTF-8 ==================D2BB  4E00  E4 B8 80  一B6A1  4E01  E4 B8 81  丁C6DF  4E03  E4 B8 ...