『心善渊』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进 ...
随机推荐
- Jaxb的优点与用法(bean转xml的插件,简化webservice接口的开发工作量)
一.jaxb是什么 JAXB是Java Architecture for XML Binding的缩写.可以将一个Java对象转变成为XML格式,反之亦然. 我们把对象与关系数据库之间的映射称 ...
- pika详解(四) channel 通道
pika详解(四) channel 通道 本文链接:https://blog.csdn.net/comprel/article/details/94662394 版权 channel通道 通道 ...
- pytest - 打标记:mark功能
对用例打标记,运行的时候,只运行打标记的用例.如冒烟测试 打标记步骤 1.先注册标记名 在配置文件:pytest.ini 注册标记名,注意必须是这个文件名 标签名加冒号后面可以写说明,必须是英文 2. ...
- Json文件解析(下)
Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::dequ ...
- Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)
在之前博文中,已经成功的实现了邮件推送.目前主流的办公终端,就是企业微信.钉钉.飞书.今天来分享下微信推送,我们具体来看. 企业微信 在配置企业微信推送时,需要有微信企业,具体如何注册.使用,另外百度 ...
- Redis-持久化策略
redis是一个内存数据库,一旦服务器宕机,内存中的数据将全部丢失.所以,对 Redis 来说,实现数据的持久化,避免从后端数据库中进行恢复,是至关重要的. 目前,Redis 的持久化主要有两大机制, ...
- iis配置代理服务器解决跨域问题
iis配置代理服务器解决跨域问题 解决:在发布的项目根目录添加web.config配置文件 在配置文件中system.webServer节点中加入 <?xml version="1.0 ...
- 详解Apache Dubbo的SPI实现机制
一.SPI SPI全称为Service Provider Interface,对应中文为服务发现机制.SPI类似一种可插拔机制,首先需要定义一个接口或一个约定,然后不同的场景可以对其进行实现,调用方在 ...
- 4.2tensorflow多层感知器MLP识别手写数字最易懂实例代码
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1 多层感知器MLP(m ...
- 拦截导弹(CDQ分治,DP)
很好的题,值得细细说,(果然又是个假期望)....... 首先我们提取信息,显然这是个三维偏序问题 用简单的DP式子表示需要满足 f[i]=max(f[1--j]+1)(v[j]<v[i],h[ ...