pytest--运行指定的测试和参数化

简介: pytest--运行指定的测试和参数化

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


相关文章
|
10月前
|
监控 安全 测试技术
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
274 14
【01】卓伊凡收到冒充税务机关的诈骗程序-决定在沙盒Sandbox环境中运行测试下-广大企业同胞们注意防诈骗
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1836 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
1819 15
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1484 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
测试技术 Python
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
本文介绍了Python的unittest框架的基础用法,包括测试初始化(setup)、清除(tearDown)函数的使用,以及assertEqual和assertGreaterEqual等断言方法,并展示了如何创建测试用例,强调了测试函数需以test_开头才能被运行。
291 1
自动化测试项目学习笔记(一):unittest简单运行(初始化,清除,设置测试行为)
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
2032 1
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
418 4
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
833 2
参数化测试
参数化测试
272 0
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。