从0到1精通自动化测试,pytest自动化测试框架,使用自定义标记mark(十一)

news2024/9/30 3:25:31

一、前言

pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行

app自动化的时候,如果想android和ios公用一套代码时,也可以使用标记功能,标明哪些是ios用例,哪些是android的,运行代码时候指定mark名称运行就可以

二、mark标记

1.以下用例,标记test_send_http()为webtest

# content of test_server.py
'''程序员曦曦'''

import pytest

@pytest.mark.webtest
def test_send_http():
    pass # perform some webtest test for your app

def test_something_quick():
    pass

def test_another():
    pass

class TestClass:
    def test_method(self):
        pass

if __name__ == "__main__":
    pytest.main(["-s", "test_server.py", "-m=webtest"])

只运行用webtest标记的测试,cmd运行的时候,加个-m 参数,指定参数值webtest

$ pytest -v -m webtest
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: E:\MOMO\se, inifile:
plugins: metadata-1.7.0, html-1.19.0
collected 4 items / 3 deselected

test_server.py .

=================== 1 passed, 3 deselected in 0.10 seconds ====================

如果不想执行标记webtest的用例,那就用 " not webtest "

$ pytest -v -m "not webtest"
import pytest

'''程序员曦曦'''

@pytest.mark.webtest
def test_send_http():
    pass # perform some webtest test for your app
def test_something_quick():
    pass
def test_another():
    pass
class TestClass:
    def test_method(self):
        pass

if __name__ == "__main__":
    pytest.main(["-s", "test_server.py", "-m='not webtest'"])

运行结果

============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: E:\MOMO\se, inifile:
plugins: metadata-1.7.0, html-1.19.0
collected 4 items

test_server.py ....

========================== 4 passed in 0.06 seconds ===========================

三、-v 指定的函数节点id

如果想指定运行某个.py模块下,类里面的一个用例,如:TestClass里面testmethod用例
每个test开头(或_test结尾)的用例,函数(或方法)的名称就是用例的节点id,指定节点id运行用-v 参数

$ pytest -v test_server.py::TestClass::test_method

pycharm运行代码

if __name__ == "__main__":
    pytest.main(["-v", "test_server.py::TestClass::test_method"])

运行结果

============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0 -- E:\python36\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.6.0', 'Platform': 'Windows-10-10.0.17134-SP0', 'Packages': {'pytest': '3.6.3', 'py': '1.5.4', 'pluggy': '0.6.0'}, 'Plugins': {'metadata': '1.7.0', 'html': '1.19.0'}, 'JAVA_HOME': 'D:\\java\\jdk17'}
rootdir: E:\MOMO\se, inifile:
plugins: metadata-1.7.0, html-1.19.0
collecting ... collected 1 item

test_server.py::TestClass::test_method PASSED                            [100%]

========================== 1 passed in 0.06 seconds ===========================

当然也能选择运行整个class

$ pytest -v test_server.py::TestClass

也能选择多个节点运行,多个节点中间空格隔开

$ pytest -v test_server.py::TestClass test_server.py::test_send_http

pycharm运行参考

if __name__ == "__main__":
    pytest.main(["-v", "test_server.py::TestClass", "test_server.py::test_send_http"])

四、-k 匹配用例名称

可以使用-k命令行选项指定在匹配用例名称的表达式

$ pytest -v -k http
$ pytest -v -k http # running with the above defined example module
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_
˓→PREFIX/bin/python3.5
cachedir: .pytest_cache
rootdir: $REGENDOC_TMPDIR, inifile:
collecting ... collected 4 items / 3 deselected
test_server.py::test_send_http PASSED [100%]
================== 1 passed, 3 deselected in 0.12 seconds ==================

你也可以运行所有的测试,根据用例名称排除掉某些用例:

$ pytest -k “not send_http” -v
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_
˓→PREFIX/bin/python3.5
cachedir: .pytest_cache
rootdir: $REGENDOC_TMPDIR, inifile:
collecting ... collected 4 items / 1 deselected
test_server.py::test_something_quick PASSED [ 33%]
test_server.py::test_another PASSED [ 66%]
test_server.py::TestClass::test_method PASSED [100%]
================== 3 passed, 1 deselected in 0.12 seconds ==================

也可以同时选择匹配 “http” 和“quick”

$ pytest -k “http or quick” -v
=========================== test session starts ============================
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_
˓→PREFIX/bin/python3.5
cachedir: .pytest_cache
rootdir: $REGENDOC_TMPDIR, inifile:
collecting ... collected 4 items / 2 deselected
test_server.py::test_send_http PASSED [ 50%]
test_server.py::test_something_quick PASSED [100%]
================== 2 passed, 2 deselected in 0.12 seconds ==================

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

【软件测试技术交流(资料分享)】:320231853(备注C)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=rS49sB1dBN6wjk4SbxAjX80YS65Zy8TH&authKey=tlP2KE7Sut5Dq7EvwkG55B%2B0sWc5WpLYbuRGFftTLHed0FB22lskhUs4Dnw6hQRP&noverify=0&group_code=320231853

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

除静电设备给我们的生产带来怎样的便利

一般来说,我们需要根据具体的生产工艺和场景选择适当的静电设备,并按照厂商提供的操作规范正确使用,以确保除静电设备有效发挥作用。 1. 静电消除:静电设备可以帮助消除物体表面的静电电荷,防止静电积聚。静电积聚可能…

UML类图设计

1.普通类,抽象类,接口 普通类 抽象类 接口 1 关联关系 依赖关系 关联:对象之间的引用关系 依赖:耦合性最低,一些静态方法等 2 聚合关系 组合关系 聚合:整体与部分的关系,但是部分可以脱…

英特尔 oneAPI 2023 黑客松大赛:赛道二机器学习:预测淡水质量 实践分享

目录 一、问题描述二、解决方案1、方案简述2、数据分析预处理特征类型处理特征分布分析 3、特征构造4、特征选择过滤法重要性排序 5、模型训练 总结未来工作 一、问题描述 淡水是我们最重要和最稀缺的自然资源之一,仅占地球总水量的 3%。它几乎触及我们日常生活的方…

Python:pyecharts可视化

文章目录 简介Geo地理图绘制折线图区域突出显示横坐标带选择展示 add地图Mapformatter控制value显示在图中显示value值目标html的解析自定义地图js资源原生地图js的解析解决省份上文字不居中的问题 桑基图设置桑基柱的颜色 参考文献 简介 (这是20年的笔记&#xff…

医疗陪诊小程序开发功能有哪些?

医疗陪诊系统开发功能有哪些? 1、注册登录。用户初次使用需使用个人手机号码或者是第三方社交账号进行注册登录,登陆之后填写个人相关信息,姓名、性别、年龄、过往病史、病历等信息,以便医生可以根据患者资料进行初步判断。…

小文智能自定义变量详解

在小文交互场景设计时,有一个特殊功能,叫做自定义变量。有时,根据外呼对象的不同,需要对用户传达不同的内容,比如称呼、地址、公司名称等等。此时,就可以使用小文交互的自定义变量功能来实现对不同用户呼出…

Destination unreachable(Port unreachable) 错误原因和解决办法

Destination unreachable(Port unreachable) 是一条由网络设备(如路由器或防火墙)生成的ICMP(Internet Control Message Protocol)错误消息,用于通知源设备目标设备或端口无法到达。 一、什么是ICMP ICMP(I…

【中危】Guava<32.0.0 存在竞争条件漏洞

漏洞描述 Guava 是 Google 公司开发的开源 Java 代码库,提供常用的Java工具和数据结构。 Guava 1.0 至 31.1 版本中的 FileBackedOutputStream 类使用Java的默认临时目录创建文件,由于创建的文件名容易被攻击者猜测,在 Unix 和 Android Ice…

静电设备在静电处理环节中的原理

静电设备在静电处理环节中发挥着重要的作用。以下是一些常见的静电设备及其作用: 1. 静电消除器:静电消除器通过释放相等数量的正负离子,有效地中和周围环境中的静电荷,从而减少或消除静电引起的问题,例如静电吸附、电…

AI科技的应用革命:改变生活方式、提升人类生产力

人工智能技术的发展和应用,正在对我们的生活方式产生深远的影响。无论是在家庭、工作还是娱乐方面,越来越多的AI工具正在改变我们的习惯、观念和行为。它们为我们提供了更加智能化、个性化和定制化的服务和产品,让我们的生活变得更加便捷、高…

NXP i.MX 8M Plus工业核心板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

1 硬件资源 创龙科技SOM-TLIMX8MP是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 单核ARM Cortex-M7异构多核处理器设计的高端工业核心板,ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM Cortex-M7实时处理单元主频高达800MHz。处理器…

【教程】Flutter与Rust完美交互,无需手写FFI代码

实践环境:Windows11 flutter_rust_bridge官方文档 Flutter环境配置教程 | Rust环境配置教程 新建一个全新的Flutter项目并运行: flutter create example && cd example && flutter run 在Flutter项目根目录新建一个Rust项目&#xf…

从0到1精通自动化,接口自动化测试——数据驱动DDT实战

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 DDT简介 名称&am…

FPGA解码 MIPI 视频 OV4689采集 4line 2.7K分辨率 提供工程源码和技术支持

目录 1、前言2、Xilinx官方主推的MIPI解码方案3、本 MIPI CSI2 模块性能及其优越性4、我这里已有的 MIPI 编解码方案5、vivado工程介绍5、上板调试验证6、福利:工程代码的获取 1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff…

python spider 爬虫 之 解析 xpath 、jsonpath、BeautifulSoup (三)

BeautifulSoup 简称:bs4 BeautifulSoup跟lxml 一样,是一个html文档的解析器,主要功能也是解析和提取数据 优缺点 缺点:效率没有lxml的效率高 优点:接口接口人性化,使用方便 延用了css选择器 安装Beautifu…

故障处理程序框图原理

一、故障处理程序框图 故障处理程序包括保护软压板的投切检查、保护定值比较、保护逻辑判断、跳闸处理程序和后加速部分。故障处理程序框图如图2-8所示。保护逻辑判断程序将在第三章中详述。 进入故障处理程序入口,首先置标志位KST为1,驱动起…

传统表格还是思维导图?哪种基本功能测试用例模式更好?

这个问题先抛出我的观点: 具体选择哪种形式更好,需要根据具体情况来考虑。 如果测试用例较为简单,可以选择表格形式;如果测试用例较为复杂,可以选择思维导图形式。但实际工作中,二者一般是结合使用的。 …

php正则匹配

一、基础内容 1、通用原子 2、元字符 符号意义.除了换行以外的所有字符*匹配前面的内容出现 0 次及以上?匹配前面的内容出现 0 次或 1 次出现一次或多次$必须以它结尾{n}恰巧出现 n 次{n,}大于等于 n 次{n,m}大于等于n,小于等于 m[]是一个集合,匹配中括号中的任…

实时数据管理与生产控制:MES系统的作用和优势解析

一、什么是MES系统? MES系统,全称为制造执行系统(Manufacturing Execution System),是一种用于管理和监控制造过程的信息系统。它通过实时收集、分析和共享生产数据,提供全面的生产计划、调度、追踪和报告…

jenkins选择不同构建环境

1、业务在有些情况下需要选择不同的环境来构建服务,使用同一套代码读取不同的配置 2、jenkins使用如下配置即可实现构建环境的选择 2.1、配置构建选项 2.2、配置构建tag 2.3、选择构建时间参数 3、使用如下pipeline实现jenkins构建环境选择 pipeline {agent any…