第四:Pytest框架之命令行参数(二)
前言
上篇博客说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则!
Pytest执行用例命令行参数
–collect-only:罗列出所有当前目录下所有的测试模块,测试类及测试函数
–tb=style:屏蔽测试用例执行输出的回溯信息,可以简化用例失败时的输出信息。style可以是 on,line,short,具体区别请自行体验
–lf:当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例
我们第一次执行用例,会看到有2个用例失败
我们使用–lf参数再次运行用例,可以发现只有之前失败的两个用例重新执行了一次
–ff:如果上次测试用例出现失败的用例,当使用–ff后,失败的测试用例会首先执行,剩余的用例也会再次执行一次
小结
以上就是命令行运行测试用例时经常使用到的参数,这些参数不仅可以单独使用,也可以组合一起使用,后期还会涉及到使用fixture时的一些命令,现在不需要了解。你可以使用–help来查看一些命令帮助信息!
Pytest收集测试用例的规则
1)从一个或者多个目录开始查找,你可以在命令行指定文件或者目录,如果未指定那么从当前目录开始收集用例
2)在该目录和所有子目录下递归查找测试模块
3)测试模块是指文件名为test_.py或者_test.py的文件
4)在测试模块中查找以test_开头的函数
5)查找名字以Test开头的类。其中首先筛选掉包含__init__()函数的类,再查找类中以Test_开头的类方法
规则验证
现在我们就依次演示pytest搜索测试用例的过程
首先我们按照以下目录结构新建一个项目
每个文件编写如下代码(我们只是为了验证规则,所以用例些的很简单,实际项目不会存在这样简单的用例)
test_测试模块1.py
1 # 测试函数2 3 def test_2():4 assert 1 == 15 6 7 # 普通函数8 def func_2():9 print('普通函数')
10
11 # 测试类
12 class TestClass_2(object):
13
14 # 测试函数
15 def test_class_3(self):
16 assert 1 == 1
17 # 普通函数
18 def func_class_3(self):
19 assert 1 == 1
20
21 # 普通类
22 class NoTestClass_2(object):
23 # 测试函数
24 def test_class_4(self):
25 assert 1 == 1
26
27 # 普通函数
28 def func_class_4(self):
29 assert 1 == 1
test_测试模块2.py
1 # 测试函数2 3 def test_1():4 5 assert 1==16 # 普通函数7 def func_1():8 print('普通函数')9
10 # 测试类
11 class TestClass_1(object):
12 # 测试函数
13 def test_class_1(self):
14 assert 1==1
15
16 # 普通函数
17 def func_class_1(self):
18 assert 1==1
19 # 普通类
20 class NoTestClass_1(object):
21
22 # 测试函数
23 def test_class_2(self):
24 assert 1 == 1
25
26 # 普通函数
27 def func_class_2(self):
28 assert 1 == 1
测试用例.py
1 # 测试函数
2 def test_one():
3 assert 1==1
4
5 # 普通函数
6 def func():
7 assert 1==1
代码分析
我们现在根据理论分析并结合代码,可以大致计算出,从项目根目录执行用例,应该会执行4条有效测试用例!
我们在项目根目录下执行pytest --collect-only看下情况,可以发现 搜索了test_测试模块1和test_测试模块2文件,并包括TestClass_2和TestClass_1类及内部test_class_3和test_class_1 和外部的测试函数test_2,test_1.
D:\pytest搜索测试用例规则>pytest --collect-only
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1
rootdir: D:\pytest搜索测试用例规则, inifile:
collected 4 items
<Package 'D:\\pytest搜索测试用例规则\\测试用例目录1'><Module 'test_测试模块1.py'><Function 'test_2'><Class 'TestClass_2'><Instance '()'><Function 'test_class_3'><Module 'test_测试模块2.py'><Function 'test_1'><Class 'TestClass_1'><Instance '()'><Function 'test_class_1'>
======================== no tests ran in 0.14 seconds =========================我们大致已经能看出pytest的搜索规则,现在们再执行一下所有用例看下 使用命令 pytest -v。可以看出确实只有4个用例被执行了,也就是只识别到了4个用例,根据下面的输出信息可以看出每个用例所在的位置D:\pytest搜索测试用例规则>pytest -v
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
rootdir: D:\pytest搜索测试用例规则, inifile:
collected 4 items测试用例目录1/test_测试模块1.py::test_2 PASSED [ 25%]
测试用例目录1/test_测试模块1.py::TestClass_2::test_class_3 PASSED [ 50%]
测试用例目录1/test_测试模块2.py::test_1 PASSED [ 75%]
测试用例目录1/test_测试模块2.py::TestClass_1::test_class_1 PASSED [100%]========================== 4 passed in 0.07 seconds ===========================
大家可以自己试试修改文件,函数,类名称,然后执行用例,查看是否会按照自己的想法执行用例!
总结
通过这两篇文章,大概已经知道如何命名测试模块,测试类,测试函数,并且如何使用简单的命令行执行测试用例。
第四:Pytest框架之命令行参数(二)相关推荐
- python编写命令行框架_python的pytest框架之命令行参数详解(上)
前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...
- 第三:Pytest框架之命令行参数(一)
一.编写第一个测试函数(用例) 1 from selenium import webdriver2 3 def testOpenUrl():4 try:5 driver = webdriver.Fir ...
- python执行脚本时的命令行选项_Python 处理脚本的命令行参数(二):使用click
安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...
- pytest合集(3)— 命令行参数
1.命令行参数大全 使用 pytest -h 可以查看 pytest 的命令行参数,有 10 大类共 132 个. 详见:Python pytest 132 个命令行参数用法 - 习久性成 - 博客园 ...
- Python自学笔记(二)命令行参数使用
前言 当我们在写完多个pyhon脚本时,怎么去使用这些脚本也成为一个问题.我们写的这些脚本对于使用者来说是封闭的存在,为了让我们的脚本文件更加灵活,我们可以通过命令行参数给脚本传入相应的数据并运行 ...
- Chrome和Firefox的命令行参数
使用Selenium由于是基于浏览器的操作,所以了解浏览器的命令行参数( Command line switches)非常重要,例如:在使用Selenium的时候,设置Chrome的调试端口.用户数据 ...
- pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)
考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...
- 【pytest】Hook 方法之 pytest_addoption :注册命令行参数
Hook 方法之 pytest_addoption : pytest_addoption 可以让用户注册一个自定义的命令行参数,方便用户将数据传递给 pytest: 这个 Hook 方法一般和 内置 ...
- pytest十二:cmd命令行参数
命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在 cmd 执行"pytest -html=report.html",这里面的"-html=report.ht ...
最新文章
- 自动编码器的评级预测
- 用Docker镜像搭建ELK环境
- mysql 1067错误,服务无法启动 进程意外终止
- gitee怎么看用户名_教你手机怎么远程连接云服务器
- VTK:可视化之LODProp3D
- 《CCNP安全Secure 642-637认证考试指南》——第8章 配置与实施路由式数据面安全...
- [转] 前端中的MVC
- HDOJ---2236 无题II[二分枚举+匈牙利]
- MySQL5添加外键约束错误 (Error Code : 1005)
- sails mysql_sails项目创建与常用基础操作总结
- Java中ThreadLocal的深入理解
- ECharts使用—折线图动态加载
- python axis=1是行吗_Python:axis=0 axis=1的理解
- IV值区间与预测能力关系
- 深度学习技术在不同方向的应用及相关开源项目
- Java学习总结与反思
- IE浏览器闪退、自动打开Edge浏览器
- 计算机权限删除文件win10,高手设置win10需要administrator权限才能删除文件的解决手段...
- Redis持久化数据之RDB和AOF
- linux之父博客,Linux25周年之际:专访 Linux 之父 Linus Torvalds
热门文章
- PHP 单元测试工具 SimpleTest
- CreateCompatibleDC用法[转]
- 《半吊子全栈系列:Boostrap3》
- 【转】URL和URI的区别
- PHP的接口(interface)
- C#中i=i++值不变的一个解释
- 【报告分享】2021-2022元宇宙报告-化身与智造:元宇宙座标解析.pdf(附下载链接)...
- 【报告分享】转变与机遇:从京东大数据看2020消费市场与品牌成长.pdf(附下载链接)...
- Marching Cubes
- 一文速览 | 对话生成预训练模型