首页 > 其他分享 >pytest框架:marek用法

pytest框架:marek用法

时间:2023-12-18 09:33:51浏览次数:25  
标签:marek 标签 mark win32 用例 pytest 用法 跳过

pytest中提供的makr标签:

    主要用于在测试用例/测试类中给用例打上标记,实现测试分组的功能,对测试用例进行筛选。

注意:只能使用已注册的标记名,如果没有在pytest.ini文件中进行注册,会报waring警告信息。

   如果没有注册的标签也想要使用,只是会有警告。我们可以加上“addopts = --strict-markers”,要求pytest不接受未注册的标签,使用会直接报错,

1、标签

标签设置步骤:

  1、注册标签名,通过pytest.ini配置文件注册;

  2、在测试用例的前面加上:@pytest.mark.已注册的标签名;

  3、运行时,根据用例标签过滤(-m 标签名)如下:

pytest.main(['-s', '-v', '-m staff_test']) #只执行staff_test分组下的用例
执行结果:一条通过用例,一条未选择
====================== 1 passed, 1 deselected in 21.80s =======================
2、用例忽略
直接忽略skip,跳过用例时,添加原因备注如下:
@pytest.mark.skip(reason='变更')
可以在用例中直接判断是否跳过,次数跳过没有原因
if sys.platform == "win32":
  pytest.skip("win32跳过用例")
条件忽略skipif:在满足某些条件时,才选择跳过用例,如下:
@pytest.mark.skipif(sys.platform == "win32", reason='win32跳过用例')
如果判断条件复杂,可以封装,如下:
def is_win32():
  return True if sys.platform == "win32" else False

only_win32 == pytest.mark.skipif(is_win32(), reason = 'win32跳过用例')
3、测试用例预期失败
当某个bug,修复优先级比较低或暂时不用修复。(此方法暂未验证)
该自动化用例运行时,会报错,那么可用@pytest.mark.xfail 来标记用例执行执行结果为xfailed。
当bug修改,用例可以跑通时,执行结果为xpassed。bug修复后可再取消xfail标记
4、用例时间限制
为了限制用例执行时间,可以设置一个超时时间,如果用例在规定的时候未执行完毕,则会被强制终止。(后续的用例不再执行)
需要安装包pip install pytest-timeout
5、用例排序
用例执行顺序默认是按照文件名ASCLL码排序的,文件内的用例默认顺序是从上往下顺序执行。
如果要改变执行的顺序,可以安装包 pip install pytest-ordering 用例前面使用如下:
@pytest.mark.run(order=1)
6、用例的依赖
有时执行用例会有依赖关系,解决此问题,需要用道第三方插件pytest-dependency,如果依赖的用例失败,则后续的用例会被标识为跳过。
所以需要注意的是被依赖的用例一定要先运行,否则后续的用例会直接跳过。
安装:pip install pytest-dependency
用例前使用如下:
test2依赖test1
@pytest.mark.dependency(name="test1")
test1
@pytest.mark.dependency(name="test2", depends=["test1"])
test2
7、参数化标签
当测试数据和期望结果一样,但是操作步骤是一样的测试用例可以用参数化。
@pytest.mark.parametrize(argnames,argvalues,indirect=False,ids=None)
参数说明:

argnames: 一个或多个参数名,用逗号分隔的字符串,如"arg1,arg2,arg3",参数名与用例入参数一致。

argvalues:参数值,必须是列表类型;如果有多个参数,则用元组存放值,一个元组存放一组参数值,元组放在列表中。

indirect:如果设置成True,则把传进来的参数当函数执行,而不是一个参数。

ids:用例的ID,传一个字符串列表,可以标识每一个测试用例,自定义测试数据结果的显示,为了增加可读性,ids的长度需要与测试数据列表的长度一致。

参考:https://www.cnblogs.com/luoshuai7394/p/17011519.html
https://blog.csdn.net/YJT1002/article/details/133774989
https://blog.csdn.net/mashang123123123/article/details/134494131

标签:marek,标签,mark,win32,用例,pytest,用法,跳过
From: https://www.cnblogs.com/rensonghua/p/17910334.html

相关文章

  • on,in,at三者之间的用法和区别
    表示事件时的用法区别:in时间长;on某-点;at时间短。表示地点时的用法区别:at强调点;on强调面;in强调在里面。表示方位时的用法区别:介系词in表示的方位是在某事物的内部,占去某物一部分。 第一,介词in,on,at表示时间时的用法区别:1,in时间范围大(一天以上)泛指在上......
  • MATLAB 函数句柄Function handle的用法
    函数句柄的作用是可以把函数句柄直接设置为参数然后执行  函数句柄(Functionhandle)是MATLAB的一种数据类型。引入函数句柄是为了使feval及借助于它的泛函指令工作更可靠;使“函数调用”像“变量调用”一样方便灵活;提高函数调用速度,特别在反复调用情况下更显效率;提高软件重用性,......
  • INotifyCollectionChanged 用法简介
    INotifyCollectionChanged接口是System.Collections.Specialized命名空间中的一个接口,用于在集合发生更改时通知订阅者。这个接口通常在实现了集合的类中使用,以便在集合变化时通知监听者(如UI控件)进行更新。以下是INotifyCollectionChanged的关键成员:CollectionChanged事......
  • crontab 用法介绍
    一、crontab概述1、crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。2、crontab存储在文件中,该文件位于/var/spool/cron/目录中。3、除了管理员,可以将命令添加到crontab中,通常用户需要执行周期性操作时使用。二、crontab语法1、crontab语......
  • Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法
    在现代软件开发中,提供清晰全面的 API文档 至关重要。@ApiModel 和 @ApiModelProperty 这样的代码注解在此方面表现出色,通过增强模型及其属性的元数据来丰富文档内容。它们的主要功能是为这些元素命名和描述,使生成的API文档更加明确。@ApiModel 和 @ApiModelProperty 的......
  • 盘点 swift 中 where 关键字的所有用法,你知道多少?
    盘点swift中where关键字的所有用法,你知道多少?杂雾无尘博观而约取,厚积而薄发​关注他 关注我,每天分享一个关于iOS的新知识   前言where 是Swift中一个强大的关键字,可以轻松过滤掉一些值。它可以用于许多不同的表达式中,今天就来盘点......
  • sqlmap的配置及基本用法
    SQLMap是一款非常强大的开源SQL注入测试工具,它能够帮助我们发现并利用潜在的SQL注入漏洞。SQLMap是基于Python开发的自动化SQL注入工具,其原理是通过构造恶意SQL查询语句,探测和利用目标网站的SQL注入漏洞。SQLMap通过发送不同类型的SQL查询请求,从而判断目标网站是否存在SQL注入漏洞,......
  • linux下的抓包工具tcpdump命令用法
     ############linux下的抓包工具tcpdump命令详解#########tcpdump命令--详解 tcpdump是工作中必用的一道指令,如果熟悉掌握,将会很快的帮你解决问题!先看看tcpdump的具体参数及意义:-i:指定tcpdump监听的网络接口-s:指定要监听数据包的长度-c:指定要监听的数据包数量,达到指定......
  • java: MappedByteBuffer的用法
    packagenio;importjava.io.RandomAccessFile;importjava.nio.MappedByteBuffer;importjava.nio.channels.FileChannel;publicclassMappedByteBufferTest{publicstaticvoidmain(String[]args)throwsException{RandomAccessFilerandomAccessF......
  • 软件测试/人工智能|教你掌握 Conda 的基本用法
    前言作为一名技术爱好者或者开发人员,我们可能经常需要管理不同版本的软件包或创建独立的开发环境。Conda是一个强大的工具,能够帮助我们轻松完成这些任务。接下来,我们将介绍Conda的基本概念和常用操作,帮助大家快速上手。什么是Conda?Conda是一个开源的软件包管理系统和环境......