Python UI自动化 —— pytest常用运行参数解析、pytest执行顺序解析

pytest常用Console参数:

  • -v 用于显示每个测试函数的执行结果
  • -q 只显示整体测试结果
  • -s 用于显示测试函数中print()函数输出
  • -x 在第一个错误或失败的测试中立即退出
  • -m 只运行带有装饰器配置的测试用例
  • -k 通过表达式运行指定的测试用例
  • -h 帮助

首先来看什么参数都没加的运行情况

class TestClass():def test_zne(self):print(1)assert 1==2def test_two(self):print(2)assert 1==2def test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main()============================= test session starts =============================
platform win32 -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\Users\72036454\Desktop\pythonProject\Base
plugins: allure-pytest-2.9.45
collected 3 itemstest_page.py FF.                                                         [100%]================================== FAILURES ===================================

-v 用于显示每个测试函数的执行结果

用于打印显示每条用例的执行情况

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2def test_two(self):print(2)assert 1==2def test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-v'])============================= test session starts =============================
platform win32 -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 -- D:\Users\72036454\AppData\Local\Programs\Python\Python38\python.exe
cachedir: .pytest_cache
rootdir: D:\Users\72036454\Desktop\pythonProject\Base
plugins: allure-pytest-2.9.45
collecting ... collected 3 itemstest_page.py::TestClass::test_zne FAILED                                 [ 33%]
test_page.py::TestClass::test_two FAILED                                 [ 66%]
test_page.py::TestClass::test_a PASSED                                   [100%]================================== FAILURES ===================================
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn888】

-q 只显示整体测试结果

简化测试整体结果。F:代表测试失败、.:代表测试通过

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2def test_two(self):print(2)assert 1==2def test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-q'])FF.                                                                      [100%]
================================== FAILURES ===================================

-s 用于显示测试函数中print()函数输出

显示测试用例中 print() 中的值

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2def test_two(self):print(2)assert 1==2def test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-s'])============================= test session starts =============================
platform win32 -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\Users\72036454\Desktop\pythonProject\Base
plugins: allure-pytest-2.9.45
collected 3 itemstest_page.py 1
F2
F3
.================================== FAILURES ===================================

-x 在第一个错误或失败的测试中立即退出

第一条用例执行失败,立即退出不在往下执行用例

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2def test_two(self):print(2)assert 1==2def test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-x','-s'])============================= test session starts =============================
platform win32 -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\Users\72036454\Desktop\pythonProject\Base
plugins: allure-pytest-2.9.45
collected 3 itemstest_page.py 1
F================================== FAILURES ===================================

-m 只运行带有装饰器配置的测试用例

用例中,第二和第三条用例加上了装饰器,装饰器最后一个单词分别为“slow” 和 “faster” ,-m 拿着两个单词去识别带这个装饰器的用例,识别到就执行,没有识别到的就不执行。

-m后面接的是表达式:['-s','-m slow or faster'] 、['-s','-m slow and faster']、['-s','-m not slow'] 这些表达式都支持。

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2@pytest.mark.slowdef test_two(self):print(2)assert 1==2@pytest.mark.fasterdef test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-s','-m slow or faster'])============================= test session starts =============================
platform win32 -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\Users\72036454\Desktop\pythonProject\Base
plugins: allure-pytest-2.9.45
collected 3 items / 1 deselected / 2 selectedtest_page.py 2
F3
.================================== FAILURES ===================================

-k 通过表达式运行指定的测试用例

通过表达式匹配用例的函数名去执行用例,not test_zne 意思是不执行“test_zne”这条用例,所以就会执行第二第三条。同理 ['-s','-k test_zne'] 表示只执行第一条。

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2@pytest.mark.slowdef test_two(self):print(2)assert 1==2@pytest.mark.fasterdef test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-s','-k not test_zne'])============================= test session starts =============================
platform win32 -- Python 3.8.10, pytest-6.2.5, py-1.10.0, pluggy-1.0.0
rootdir: D:\Users\72036454\Desktop\pythonProject\Base
plugins: allure-pytest-2.9.45
collected 3 items / 1 deselected / 2 selectedtest_page.py 2
F3
.================================== FAILURES ===================================

-h 帮助

这才是重点,学会使用这个,剩余的都学会了

import pytest
class TestClass():def test_zne(self):print(1)assert 1==2@pytest.mark.slowdef test_two(self):print(2)assert 1==2@pytest.mark.fasterdef test_a(self):print(3)assert 1==1if __name__ == '__main__':pytest.main(['-h'])

pytest的执行顺序:

  • 默认情况下,pytest的执行顺序是自上往下的。
  • 可以通过第三方插件pytest-ordering实现自定义用例执行顺序
  • 官方文档: https://pytest-ordering.readthedocs.io/en/develop/

安装插件:

pip install pytest-ordering

pytest-ordering使用:

方式一

  • 第一个执行:@pytest.mark.first
  • 第二个执行:@pytest.mark.second
  • 倒数第二个执行:@pytest.mark.second_to_last
  • 最后一个执行:@pytest.mark.last

方式二

  • 第一个执行:@pytest.mark.run('first')
  • 第二个执行:@pytest.mark.run('second')
  • 倒数第二个执行:@pytest.mark.run('second_to_last')
  • 最后一个执行:@pytest.mark.run('last')

方式三

  • 第一个执行:@pytest.mark.run(order=1)
  • 第二个执行:@pytest.mark.run(order=2)
  • 倒数第二个执行:@pytest.mark.run(order=-2)
  • 最后一个执行:@pytest.mark.run(order=-1)

对于以上三张方法,经常使用的不多,第一个执行和最后一个执行比较常用。

END,今天的分享就到此结束了!点赞关注不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217328.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【接口技术】实验2:基本I/O实验

实验2 基本I/O实验 一、实验目的 1:掌握I/O端口地址译码电路的工作原理。 2:掌握简单并行接口的工作原理及使用方法。 二、实验内容 1:I/O端口地址译码实验 I/O地址译码电路不仅与地址信号有关,而且与控制信号有关。参加译码…

【MyBatis】MyBatis操作数据库

目录 一,准备工作 1.1 创建工程 1.2 准备数据 1.3 数据库连接字符串 1.4 创建持久层接口UserInfoMapper 1.5 单元测试 二,注解的基础操作 2.1 打印日志 2.2 参数传递 2.3 增(Insert) 2.4 删(Delete&#x…

2023-11-25 LeetCode每日一题(二叉树中的伪回文路径)

2023-11-25每日一题 一、题目编号 1457.二叉树中的伪回文路径二、题目链接 点击跳转到题目位置 三、题目描述 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中…

Mindomo Desktop for Mac免费思维导图软件,助您高效整理思维

思维导图是一种强大的工具,可以帮助我们整理思维、提高记忆力、激发创造力。而Mindomo Desktop for Mac作为一款免费的思维导图软件,能够帮助我们更高效地进行思维整理和项目管理。在本文中,我们将介绍Mindomo Desktop for Mac的功能和优势&a…

【接口技术】实验1:简易汇编程序调试

实验1 简易汇编程序调试 一、实验目的 1:掌握在集成开发软件环境中汇编程序的编写、调试方法。 2:学会用DOS功能调用(1号和2号)完成输入和输出。 二、实验内容 1-1: 在以BUF为首地址的字节存储区存放有若干个无符…

web前端开发基础----标准流布局和非标准流布局

1,标准流布局 标准流,也称文档流或普通流,是所有元素默认的布局方式。 在标准流中,元素按照其在 HTML 中出现的顺序,自上而下依次排列,并占据其父容器内的可用空间。 标准流中的元素按照其自然尺寸和位置进…

如何将Postman API转换JMeter进行扩展

可扩展性 Postman测试无法扩展。如果您的集合中有很多请求,Postman / Newman将使用1个线程(用户)并按顺序执行这些请求,而不是使用多个线程并发执行。 性能测试能力 由于可扩展性限制,Postman不适合API性能测试。性…

AutoDL tensorboard实现可视化

1.在自己的代码中,writer SummaryWriter(../tf-logs),具体位置看自己在哪个路径下 我的云服务器下event保存在这里,程序跑起来之后点开这个文件夹就能看见events 2.在容器实例中选择AutoPanel 3.选择tensorboard打开即可看见 4.出现问题 打…

你知道如何使用队列实现栈吗?(C语言)

这时一道非常经典的题型,因为栈和队列的性质是相反的,队列的数据是先入先出,栈的数据是后入先出,那么怎样使用两个队列实现栈呢? 225. 用队列实现栈https://leetcode.cn/problems/implement-stack-using-queues/ 这是…

PS去除图片上的文字。

问题描述:如何使用PS去除图片上的文字。 解决办法: 第一步:使用框选命令选中文字所在区域,如下图所示。 第二步,右键选择填充,选择内容填充即可。 第三步,文字去除效果如下。

Linux-基本指令(1.0)

Linux是一个非常流行的操作的知识,并提供实例帮助读者更好地理解。让我们一起来学习吧!系统,也是云计算、大数据、人工智能等领域的重要基础。学习Linux命令是Linux系统管理的基础,也是开发过程中必不可少的技能。本博客将介绍Lin…

人工智能 -- 神经网络

1、什么是神经网络 什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解释太多,因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能? 从1956年夏季首次提出“人工智能”这…