mark

pytest提供了标记机制,允许你使用marker对测试函数做标记,一个测试函数可以有多个marker,一个marker也可以用来标记多个测试函数

比如我们需要进行冒烟测试,不可能把所有的用例都跑一遍,我们可以挑选一些重要的用例进行冒烟测试,为了把选定的测试加入冒烟测试,可以对他们添加@pytest.mark.smoke装饰器。我们有两个文件,里面分别放了两个测试用例

test_demo.py

import pytest

@pytest.mark.get
def test_demo3():
print('我是tets demo 3') @pytest.mark.smoke
@pytest.mark.get
def test_demo4():
print('我是tets demo 4')

test_mark.py

import pytest

@pytest.mark.get
def test_demo1():
print('我是tets demo 1') @pytest.mark.smoke
@pytest.mark.get
def test_demo2():
print('我是tets demo 2')

我们可以看到,冒烟测试两个文件里面各有一个,来使用-m参数执行一下,这样我们标记的smoke的用例就被执行了,其他的没有被执行

-m后面也可以使用表达式,可以在标记之间添加and,or,not关键字

跳过测试

要跳过某个测试,只需要简单的在测试函数上方添加@pytest.mark.skip()装饰器即可
比如下面的两个测试用例,我们只想执行test_demo2,则我们可以给test_demo1加上装饰器
import pytest

@pytest.mark.skip()
def test_demo1():
print('我是tets demo 1') def test_demo2():
print('我是tets demo 2')

skipif

我们可以给要跳过的测试添加理由和条件,这时应当使用skipif来替代skip

import pytest

@pytest.mark.skipif(3<5, reason='版本不匹配')
def test_demo1():
print('我是tets demo 1') def test_demo2():
print('我是tets demo 2')

前面的是个条件,可以是python的表达式,表达式的值为True时跳过,为false时执行。后面的是原因,在来执行一次

但我们仍然看不到跳过的原因,这时可以使用-rs

运行测试子集

运行测试有很多方式,不但可以选择运行某个测试目录、文件、类中的测试,还可以选择运行某一个测试用例

运行单个目录

运行单个目录下的所有测试,以目录作为pytest的参数即可

比如我testpytest目录下有两个测试文件,分别是test_demo.py和test_mark.py

运行单个测试文件

运行单个文件里的全部测试,以路径名加文件名作为pytest参数即可

比如我们只想运行testpytest目录下的test_demo.py文件

运行单个测试函数

运行单个测试函数,只需要在文件名后添加::符号和函数名

比如我们只想运行testpytest目录下的test_demo.py文件里的test_demo3这个函数

运行单个测试类

与运行单个函数类似,只需要在文件名后面加上::符号和类名

import pytest

class Test1():
def test_demo3(self):
print('我是tets demo 3') def test_demo4(self):
print('我是tets demo 4') class Test2():
def test_demo1(self):
print('我是tets demo 1') def test_demo2(self):
print('我是tets demo 2')

比如我们只想运行Test2的类

运行单个测试类中的测试方法

如果不希望运行测试类中的所有测试,只想指定运行其中一个,则在类名后面再加上::符号和方法名

用测试名划分测试集合

-k选项允许用一个表达式指定需要运行的测试,该表达式可以匹配测试名(或者子串)。表达式中可以包含and,or,not

def test_demo1():
print('我是tets demo 1') def test_demo2():
print('我是tets demo 2') def test_demo3():
print('我是tets demo 3') def test_parm():
print('我是tets parm')

如上代码我们只想运行测试函数里面有demo的所有用例

参数化

可以使用 @pytest.mark.parametrize(argnames, argvalues) 装饰器达到批量传送参数的目的

parametrize()的第一个参数是用逗号分割的字符串列表,第二个参数是一个值列表

import pytest

@pytest.mark.parametrize("a,b,c",
[(1, 2, 3),
(3, 2, 5),
(4, 5, 9)])
def test_add(a, b, c):
assert a + b == c

pytest--运行指定的测试和参数化的更多相关文章

  1. pytest 运行指定用例

    pytest运行指定用例 随着软件功能的增加,模块越来越多,也意味用例越来越多,为了节约执行时间,快速得到测试报告与结果,在工作中可以通过运行指定用例,达到快速执行用例 例子目录 spec_sub1_ ...

  2. pytest之收集用例规则与运行指定用例

    前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...

  3. 11、pytest -- 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...

  4. pytest -- 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...

  5. pytest跳过指定的测试或模块

    参考Allure官方文档,pytest官方文档 实现setup/teardown 1.运行带指定标记的测试 @pytest.mark.tags ,这里的tags可以自定义 命令行执行:pytest - ...

  6. pytest文档19-doctest测试框架

    前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...

  7. Pytest命令行执行测试

    Pytest命令行执行测试 from collections import namedtuple Task = namedtuple('Task', ['summary','owner','done' ...

  8. pytest(3):pytest运行参数介绍

    前言 pytest 带有很多参数,可以使用 pytest --help  来查看帮助文档,下面介绍几种常用的参数: 无参数 读取路径下所有符合规则的文件,类,方法,函数全部执行.使用方法如下:  py ...

  9. windows ping 某个网段,不能运行指定的软件

    windows ping 某个网段,不能运行指定的软件 :begin @echo OFF color 0a Title Net Test Tool by:HRuinger Mode con cols= ...

随机推荐

  1. sqlyog -------- 安装

    SQLyog是RDBMS MySQL的GUI工具.在从Windows Vista到Windows 10的Windows平台上运行,使用Wine环境,还使其可以在Linux和各种Unix(包括macOS ...

  2. Security实现登录安全控制

    1:在pom.xml中添加依赖 <!-- 身份验证 --> <dependency> <groupId>org.springframework.security&l ...

  3. Redis学习之intset整数集合源码分析

    1.整数集合:整数的集合,升序排序,无重复元素 2.整数集合intset是集合键的底层实现之一,当一个集合只包含整数值的元素,并且这个集合的元素数量不多时,redis会使用整数集合作为集合键的底层实现 ...

  4. ISO C语言新标准(C11)

    新特性[2]有些和C++11是对应的,如线程和UTF-8: 对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符, aligned_alloc函数以及<std ...

  5. go ---MQTT client

    Paho GO Client   语言 GO 协议 EPL AND EDL 官网地址 http://www.eclipse.org/paho/ API类型 Asynchronous  描述 Paho ...

  6. RabbitMQ系列(二)环境搭建

    参考: https://www.cnblogs.com/ericli-ericli/p/5902270.html https://blog.csdn.net/weixin_30619101/artic ...

  7. [快捷键的使用] IntelliJ IDEA 将数据库里面的表转化为对象

    本文讲述IntelliJ IDEA 多行编辑快捷键的使用,希望能帮到新人提高效率. 注意:在笔记本键盘上操作的方法. 数据库连接工具使用SQLyog 第一步: 从数据里面将文本拷贝到User类里面. ...

  8. webuploader-异步切片上传(暂不支持断点续传)及 下载方法!C#/.NET

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 进入正题: 关于webuploader,参考网址:https://fex.baidu.com/webuploader/: 本篇博客范例下载地址:ht ...

  9. AIX运维常用命令

    目前传统的磁盘管理仍有不足:如果下Unix系统中的存储容量需要扩展,文件系统就必须停止运行,然后通过重构分区的手段来进行分区和文件系统的扩容.一般采用的方法是先备份该文件系统并删除其所在的分区,然后重 ...

  10. JavaScript 作用域不完全指北

    什么是作用域 对于几乎所有编程语言,最基本的功能之一就是能够存储变量的值,并且能在之后对这个值进行访问和修改.这样就会带来几个问题,这些变量存储在哪里?程序在需要的时候又是如何找到它们的?要解决这些问 ...