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. LeetCode 167:两数之和 II - 输入有序数组 Two Sum II - Input array is sorted

    公众号: 爱写bug(ID:icodebugs) 给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index ...

  2. PyQt5笔记之菜单栏

    目录 菜单栏 创建单层菜单 创建多层菜单 右键打开菜单 官方菜单实例 菜单常用方法 菜单栏 创建单层菜单 import sys from PyQt5.QtWidgets import QApplica ...

  3. 准备环境 安装window10+ubuntu18双系统

    记录一下这次双硬盘安装windows10和Ubuntu18的过程 1通过u启通制作pe,并将windows的镜像放入到u盘中 2电脑通过u盘启动,进入pe 3在pe中将两块固态硬盘制作为guid格式, ...

  4. 2.1:CGPROGRAM

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 前言 经过前面两个章节的铺垫,我们对渲染以及Unity Shaderlab ...

  5. apache poi操作office文档----java在线预览txt、word、ppt、execel,pdf代码

    在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputStream bis = null;  URL url = null;  HttpURLConnectio ...

  6. JavaIO学习:字节流

    JavaIO流之字节流 字节流 抽象基类:InputStream,OutputStream. 字节流可以操作任何数据. 注意: 字符流使用的数组是字符数组,char[] chs : 字节流使用的数组是 ...

  7. 聊聊Lambda架构

    定义 在数据分析场景中,我们可能会遇到这样的问题.例如,我们要做一个推荐系统,如果我们用批处理任务去做,一天或者一小时的推荐频次明显延迟太大.如果用流处理任务,虽然延迟的问题解决了,然而只用实时数据而 ...

  8. response.Close、response.End、response.Flush区别(下载文件)

    今天在做文件下载功能用到的是response的方法,首先我们要了解这些方法的作用. 1.response.write():将信息写入http响应输出流. 2.response.Flush:向客户端发送 ...

  9. JIRA的安装及配置

    JIRA安装    命令行打开服务:cmd:services.msc 同禅道和tapd是一样功能的. 1.安装jdk 2.安装mysql 3.安装JIRA  JIRA安装密钥的查找 1.登陆管理页面: ...

  10. Python Django 实现简单注册功能

    Python Django 实现简单注册功能 项目创建略,可参考前期文档介绍. 目录结构如下 编辑views.py from django.shortcuts import render # Crea ...