『心善渊』Selenium3.0基础 — 28、unittest中测试套件的使用
1、测试套件的作用
在我们实际工作,使用unittest框架会有两个问题:
- 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序。
- 一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么实现多个测试文件一起执行行。
要解决上面两个问题,我们就要用到测试套件TestSuite。
2、使用测试套件
(1)入门示例
1)用法:
unittest.TestSuite():创建测试套件。addTest()和addTests()方法是将测试用例添加到测试套件中。unittest.TextTextRunner():通过该类下面的run()方法来运行suite所组装的测试用例,suite测试套件为run()方法参数。
例如:将test_Demo1模块下的TestDmeo类下的test_case_01测试用例添加到测试套件中。
# 1.创建测试套件
suite = unittest.TestSuite()
# 2.向测试套件中添加测试用例
# 模块名.测试类名('测试用例名')
suite.addTest(test_Demo.TestDmeo('test_case_01'))
# 3.执行测试套件中的用例
runner = unittest.TextTestRunner()
runner.run(suite)
2)示例:
# 1 导入unittest
import unittest
# 2 创建测试类
class TestDmeo(unittest.TestCase):
# 3 编写test case
def test_case_01(self):
"""测试用例1"""
print("执行测试用例1")
def test_case_02(self):
"""测试用例2"""
print("执行测试用例2")
def test_case_03(self):
"""测试用例3"""
print("执行测试用例3")
if __name__ == '__main__':
# 执行当前测试类中,以test开头的测试用例
# unittest.main()
# 1. 创建测试套件
suite = unittest.TestSuite()
# 2. 向测试套件中添加测试用例
# 当前模块中的测试用例,可省略模块名(文件名)
suite.addTest(TestDmeo('test_case_02'))
suite.addTest(TestDmeo('test_case_03'))
suite.addTest(TestDmeo('test_case_01'))
# 3. 执行测试套件中的用例
runner = unittest.TextTestRunner()
runner.run(suite)
提示:向测试套件中添加测试用例的顺序,就是测试用例执行的顺序。(此时解决了第一个问题)
注意:
使用PyCharm执行上边代码,会按顺序执行全部测试用例,这是PyCharm问题。
使用命令行直接执行该Python文件,没有问题。
(2)根据不同的条件加载测试用例(了解)
提示:这种方式很少用,了解一下即可。推荐都用下面的方式(3)。
unittest.TestLoader():根据不同的条件加载测试用例,其中有几个方法:
unittest.TestLoader().loadTestsFromName(测试用例名)unittest.TestLoader().loadTestsFromNames(测试用例名的列表)unittest.TestLoader().loadTestsFromTestCase(测试类名)unittest.TestLoader().loadTestsFromModule(模块名)unittest.TestLoader().discover()
例如:将``test_demo2模块下的TestDmeo类下的test_case_01`测试用例添加到测试套件中。
测试用例名格式:文件名+类名+方法名,一级一级的。
示例:
# 1 导入unittest
import unittest
# 2 创建测试类
class TestDmeo(unittest.TestCase):
# 3 编写test case
def test_case_0001(self):
"""测试用例0001"""
print("执行测试用例0001")
def test_case_0002(self):
"""测试用例0002"""
print("执行测试用例0002")
def test_case_0003(self):
"""测试用例0003"""
print("执行测试用例0003")
if __name__ == '__main__':
# 1. 创建测试套件
suite = unittest.TestSuite()
# 2. 向测试套件中添加测试用例
"""
# 2.1 loadTestsFromName
# 提示:
name参数是传入文件名,字符串格式
格式:模块名.测试类名.测试用例名
"""
# suite_1 = unittest.TestLoader().loadTestsFromName('test_demo2.TestDmeo.test_case_01')
"""
# 2.2 loadTestsFromNames
参数是一个列表,列表中的元素格式同上
"""
# suite_1 = unittest.TestLoader().loadTestsFromNames(
# ['test_demo2.TestDmeo.test_case_01','test_demo2.TestDmeo.test_case_02'])
"""
# 2.3 loadTestsFromTestCase
参数一个测试类名
当前模块直接传如测试类名称即可
"""
suite_1 = unittest.TestLoader().loadTestsFromTestCase(TestDmeo)
# 加入套件
suite.addTest(suite_1)
# 3. 执行测试套件中的用例
runner = unittest.TextTestRunner()
runner.run(suite)
(3)常用方式(推荐)
unittest.defaultTestLoader():通过该类下面的discover()方法可自动根据测试目录test_dir匹配查找测试用例文件,如test*.py,并将查找到的测试用例组装到测试套件中。
1)简单示例:
discover=unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
2)测试套件示例:
- 创建
test_case包用来存放测试用例。 - 以上面两个测试类做例子,把
test_demo1和test_demo2两个测试用例类文件放入test_case包中。 - 编写调用用例脚本
run_case.py文件执行多个测试用例。
3)说明:
test_demo1和test_demo2两个文件,就是上面(1)(2)的示例。
下面是run_case.py文件内容,需求是同时执行test_demo1和test_demo2两个文件中的测试用例。
"""
1.学习目标
run_case.py必须会写
2.操作步骤
2.1 明确测试用例存放路径
2.2 将要执行的用例添加到测试套件中
2.3 执行测试套件中的用例
3.注意事项
1.run_case.py文件需要放置在项目根目录下
2.所有测试用例都写在test_caset文件夹中
3.编写用例的py文件需要以test开头
"""
# 1.导入unittest
import unittest
# 2.获取测试用例存放路径---测试用例存放文件夹
case_path = "./test_case"
# 3.添加用例到测试套件中
"""
# 如果只添加一个文件,pattern就直接填写文件名
start_dir, 指定case目录
pattern='test*.py', 匹配文件规则,# 选择文件夹中的写test_开头的py文件
"""
discover = unittest.defaultTestLoader.discover(case_path, pattern="test*.py")
# 4.执行测试套件中的用例
runner = unittest.TextTestRunner()
runner.run(discover)
『心善渊』Selenium3.0基础 — 28、unittest中测试套件的使用的更多相关文章
- 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)
目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作
目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...
- 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件
目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...
- 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍
目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...
- 『心善渊』Selenium3.0基础 — 25、unittest单元测试框架
目录 1.unittest基本简介 2.unittest基本概念 (1)unittest核心的四个概念 (2)如何创建一个测试类 (3)test fixture常用的四个方法 (4)unittest编 ...
- 『心善渊』Selenium3.0基础 — 26、unittest测试框架的断言
目录 1.断言介绍 2.常用的断言方法 3.断言示例 1.断言介绍 在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的,这时会用到断言方法. 本着没有消 ...
- 『心善渊』Selenium3.0基础 — 29、使用HTMLTestRunner生成unittest的HTML报告
目录 1.HTMLTestRunner介绍 2.HTMLTestRunner的使用 3.测试报告示例 4.封装成模块 1.HTMLTestRunner介绍 HTMLTestRunner是一个基于uni ...
- 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API
目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...
随机推荐
- Linux(CentOS7)下Nginx安装
记录一下 Linux(CentOS7) 下 Nginx 安装过程 一.准备工作 版本说明: Linux版本:CentOS 7 64位 Nginx版本:nginx-1.20.0 1. 下载安装文件 采用 ...
- 删除本地解压版Mysql
1.关闭服务 以管理员身份运行cmd,使用命令net stop mysql停止服务. 2.卸载服务 使用命令mysqld -remove mysql卸载服务. 这时候在服务里已经找不到mysql服务了 ...
- CodeGen概述
CodeGen概述 CodeGen是在协同开发环境中工作的软件开发人员可以用来生成源代码的工具.该代码可能是Synergy DBL代码,也可能是其他语言的源代码.CodeGen并不局限于为任何特定的开 ...
- 记录第一次完整的uni-app开发经验
由于我是做后端的,一直没有做过前端的页面,以前在学校图书馆看的都是jsp技术,几乎是把java代码嵌套在前端界面.后面出来实习了才发现,jsp是真的落后了.现在的大学和实际工作所需偏差太大了,没办法. ...
- 用Redis实现签到功能
一.场景 在很多时候我们会遇到用户签到的场景,每天用户进入应用时,需要获取用户当天的签到状态,如果没签到,用户可以进行签到,并且得到相关的奖励.我们可能需要每天的签到情况,必要的时候可能还需要统计一下 ...
- 深入 Go 中各个高性能 JSON 解析库
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/535 其实本来我是没打算去看 JSON 库的性能问题的,但是最近我对 ...
- C++ QT安装教程2021
第一步 去官网下载 https://download.qt.io/archive/qt/ 第二步 next 然后 我是注册的账号 注意密码的格式,要求至少7位,包含大小写字母和数字 第三步 点击下一步 ...
- 一、Nginx的安装
1.下载nginx软件 http://nginx.org/download/ 2.安装依赖包 [root@client ~]# useradd -s /sbin/nologin nginx 创建ngi ...
- UNREFERENCED_PARAMETER的用处
UNREFERENCED_PARAMETER的用处 作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命了一 ...
- Oracle不知道用户密码情况下,如何在不更改密码的前提下解锁用户或者延期密码有效期
1.问题描述: 生产环境,zabbix告警业务用户密码即将过期,但是如何不知道业务用户密码的情况下来解决该问题? 2.实验一: 1)创建新的用户test,并授予test resource角色和conn ...