前言
上篇博客说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和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框架之命令行参数(二)相关推荐

  1. python编写命令行框架_python的pytest框架之命令行参数详解(上)

    前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...

  2. 第三:Pytest框架之命令行参数(一)

    一.编写第一个测试函数(用例) 1 from selenium import webdriver2 3 def testOpenUrl():4 try:5 driver = webdriver.Fir ...

  3. python执行脚本时的命令行选项_Python 处理脚本的命令行参数(二):使用click

    安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...

  4. pytest合集(3)— 命令行参数

    1.命令行参数大全 使用 pytest -h 可以查看 pytest 的命令行参数,有 10 大类共 132 个. 详见:Python pytest 132 个命令行参数用法 - 习久性成 - 博客园 ...

  5. Python自学笔记(二)命令行参数使用

    前言   当我们在写完多个pyhon脚本时,怎么去使用这些脚本也成为一个问题.我们写的这些脚本对于使用者来说是封闭的存在,为了让我们的脚本文件更加灵活,我们可以通过命令行参数给脚本传入相应的数据并运行 ...

  6. Chrome和Firefox的命令行参数

    使用Selenium由于是基于浏览器的操作,所以了解浏览器的命令行参数( Command line switches)非常重要,例如:在使用Selenium的时候,设置Chrome的调试端口.用户数据 ...

  7. pytest中pytest_addoption用法 动态添加命令行参数 (钩子函数)

    考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...

  8. 【pytest】Hook 方法之 pytest_addoption :注册命令行参数

    Hook 方法之 pytest_addoption : pytest_addoption 可以让用户注册一个自定义的命令行参数,方便用户将数据传递给 pytest: 这个 Hook 方法一般和 内置 ...

  9. pytest十二:cmd命令行参数

    命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在 cmd 执行"pytest -html=report.html",这里面的"-html=report.ht ...

最新文章

  1. 自动编码器的评级预测
  2. 用Docker镜像搭建ELK环境
  3. mysql 1067错误,服务无法启动 进程意外终止
  4. gitee怎么看用户名_教你手机怎么远程连接云服务器
  5. VTK:可视化之LODProp3D
  6. 《CCNP安全Secure 642-637认证考试指南》——第8章 配置与实施路由式数据面安全...
  7. [转] 前端中的MVC
  8. HDOJ---2236 无题II[二分枚举+匈牙利]
  9. MySQL5添加外键约束错误 (Error Code : 1005)
  10. sails mysql_sails项目创建与常用基础操作总结
  11. Java中ThreadLocal的深入理解
  12. ECharts使用—折线图动态加载
  13. python axis=1是行吗_Python:axis=0 axis=1的理解
  14. IV值区间与预测能力关系
  15. 深度学习技术在不同方向的应用及相关开源项目
  16. Java学习总结与反思
  17. IE浏览器闪退、自动打开Edge浏览器
  18. 计算机权限删除文件win10,高手设置win10需要administrator权限才能删除文件的解决手段...
  19. Redis持久化数据之RDB和AOF
  20. linux之父博客,Linux25周年之际:专访 Linux 之父 Linus Torvalds

热门文章

  1. PHP 单元测试工具 SimpleTest
  2. CreateCompatibleDC用法[转]
  3. 《半吊子全栈系列:Boostrap3》
  4. 【转】URL和URI的区别
  5. PHP的接口(interface)
  6. C#中i=i++值不变的一个解释
  7. 【报告分享】2021-2022元宇宙报告-化身与智造:元宇宙座标解析.pdf(附下载链接)...
  8. 【报告分享】转变与机遇:从京东大数据看2020消费市场与品牌成长.pdf(附下载链接)...
  9. Marching Cubes
  10. 一文速览 | 对话生成预训练模型