我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pytest运行指定的测试参数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

pytest运行指定的测试参数

在这里插入图片描述


文章目录

一.mark

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

1.背景:

当我们需要进行冒烟测试,不可能把所有的用例都跑一遍,我们可以挑选一些重要的用例进行冒烟测试,为了把选定的测试加入冒烟测试,可以对他们添加@pytest.mark.smoke装饰器。

案例1:只执行smoke类型的测试用例

在这里插入图片描述
test_menus1.py

# encoding=utf-8import pytestimport loggingimport randomimport time@pytest.mark.smokeclass TestMenus:    @pytest.mark.smoke    def test_menu1(self):        logging.info('执行测试用例1')        assert 2 == 2    #@pytest.mark.repeat(2)    @pytest.mark.smoke    def test_menu2(self):        logging.info('执行测试用例2')        assert 1 == 1    def test_menu3(self):        logging.info('执行测试用例3')        assert 2 == 2if __name__ == '__main__':    pytest.main()

test_work1.py

#encoding=utf-8import pytestclass TestWork:    @pytest.mark.smoke    def test_h(self,home_url):        print("用例:%s" % home_url)    def test_work1(self):        assert 1 == 1    def test_work2(self):        assert 1 == 1if __name__ == '__main__':    pytest.main()

执行命令行:

pytest

我们可以看到,
测试模块menus—>test_menus1.py文件—>类上加了装饰器,也就是说需要执行3条用例;
测试模块menus—>test_menus1.py文件—>test_h加了装饰器,说明执行1条用例
总需要执行4条用例
-m参数执行一下,这样我们标记的smoke的用例就被执行了,其他的没有被执行

在这里插入图片描述

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

执行命令:表示执行没有标记smoke的测试用例

pytest -m "not smoke"

特别注意
pytest -m “not smoke”:必须使用双引号
在这里插入图片描述

二.跳过测试skip

要跳过某个测试,只需要简单的在测试函数上方添加@pytest.mark.skip()装饰器即可
在这里插入图片描述

案例1:pytest.mark.skip():跳过某些用例

test_menus.py

# encoding=utf-8import pytestimport loggingimport randomimport time@pytest.mark.smokeclass TestMenus:    @pytest.mark.skip()    @pytest.mark.smoke    def test_menu1(self):        logging.info('执行测试用例1')        assert 2 == 2    #@pytest.mark.repeat(2)    @pytest.mark.smoke    def test_menu2(self):        logging.info('执行测试用例2')        assert 1 == 1    def test_menu3(self):        logging.info('执行测试用例3')        assert 2 == 2if __name__ == '__main__':    pytest.main()

test_work1.py

#encoding=utf-8import pytestclass TestWork:    @pytest.mark.smoke    def test_h(self,home_url):        print("用例:%s" % home_url)    @pytest.mark.skip()    def test_work1(self):        assert 1 == 1    def test_work2(self):        assert 1 == 1if __name__ == '__main__':    pytest.main()

执行测试命令

pytest

在这里插入图片描述

案例2:如果在整个类中添加@pytest.mark.skip():表示整个类中的测试用例都将跳过

#encoding=utf-8import pytest@pytest.mark.skip()class TestWork:    @pytest.mark.smoke    def test_h(self,home_url):        print("用例:%s" % home_url)    @pytest.mark.skip()    def test_work1(self):        assert 1 == 1    def test_work2(self):        assert 1 == 1if __name__ == '__main__':    pytest.main()

命令行执行:

pytest

在这里插入图片描述

三.跳过测试skipif

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

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

test_menus1.py

# encoding=utf-8import pytestimport loggingimport randomimport time@pytest.mark.smokeclass TestMenus:    @pytest.mark.skipif(24<8,reason='版本不匹配')    @pytest.mark.smoke    def test_menu1(self):        logging.info('执行测试用例1')        assert 2 == 2    #@pytest.mark.repeat(2)    @pytest.mark.smoke    def test_menu2(self):        logging.info('执行测试用例2')        assert 1 == 1    def test_menu3(self):        logging.info('执行测试用例3')        assert 2 == 2if __name__ == '__main__':    pytest.main()

test_work1.py

#encoding=utf-8import pytest#@pytest.mark.skip()class TestWork:    @pytest.mark.smoke    def test_h(self,home_url):        print("用例:%s" % home_url)    @pytest.mark.skipif(8<24,reason='版本不匹配')    def test_work1(self):        assert 1 == 1    def test_work2(self):        assert 1 == 1if __name__ == '__main__':    pytest.main()

执行命令
-rs:控制台查看跳过信息

pytest -rs

在这里插入图片描述

四.运行测试子集

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

目录结构
在这里插入图片描述

1.运行单个目录

test_menus1.py

# encoding=utf-8import pytestimport loggingimport randomimport time@pytest.mark.smokeclass TestMenus:    @pytest.mark.skipif(24<8,reason='版本不匹配')    @pytest.mark.smoke    def test_menu1(self):        logging.info('执行测试用例1')        assert 2 == 2    #@pytest.mark.repeat(2)    @pytest.mark.smoke    def test_menu2(self):        logging.info('执行测试用例2')        assert 1 == 1    def test_menu3(self):        logging.info('执行测试用例3')        assert 2 == 2if __name__ == '__main__':    pytest.main()

test_work1.py

#encoding=utf-8import pytest#@pytest.mark.skip()class TestWork:    @pytest.mark.smoke    def test_h(self,home_url):        print("用例:%s" % home_url)    @pytest.mark.skipif(8<24,reason='版本不匹配')    def test_work1(self):        assert 1 == 1    def test_work2(self):        assert 1 == 1if __name__ == '__main__':    pytest.main()

案例1:运行menus目录下的文件

执行命令

D:\project_development\api_pytest>pytest testcases/menus
collecting ... ----这是前置方法---- testcases\menus\test_menus1.py::TestMenus.test_menu1 ✓                           33% ███▍ testcases\menus\test_menus1.py::TestMenus.test_menu2 ✓                           67% ██████▋----这是后置方法---- testcases\menus\test_menus1.py::TestMenus.test_menu3 ✓                          100% ██████████Results (0.10s):       3 passed

在这里插入图片描述

2.运行单个测试文件

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

案例2:运行test_menus1.py文件中的所有用例

执行命令

D:\project_development\api_pytest>pytest testcases/menus/test_menus1.py

在这里插入图片描述

3.运行单个测试函数

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

案例3:运行test_menus1.py文件中的test_menu1这条用例

执行命令

D:\project_development\api_pytest>pytest testcases\menus\test_menus1.py::TestMenus::test_menu1

在这里插入图片描述
特别注意:运行单个测试函数时,下面的方法不可取,会报错

ERROR: not found: D:\project_development\api_pytest\testcases\menus\test_menus1.py::test_menu1(no name 'D:\\project_development\\api_pytest\\testcases\\menus\\test_menus1.py::test_menu1' in any of [<Module test_menus1.py>])

在这里插入图片描述

4.运行单个测试类

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

案例4:执行test_menus1.py下的TestMenus类

执行命令

D:\project_development\api_pytest>pytest testcases\menus\test_menus1.py::TestMenus

在这里插入图片描述

5.用测试名划分测试集合

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

案例:执行用例中包含’2’的测试用例

test_menus1.py

# encoding=utf-8import pytestimport loggingimport randomimport time@pytest.mark.smokeclass TestMenus:    @pytest.mark.skipif(24<8,reason='版本不匹配')    @pytest.mark.smoke    def test_menu1(self):        logging.info('执行测试用例1')        assert 2 == 2    #@pytest.mark.repeat(2)    @pytest.mark.smoke    def test_menu2(self):        logging.info('执行测试用例2')        assert 1 == 1    def test_menu3(self):        logging.info('执行测试用例3')        assert 2 == 2if __name__ == '__main__':    pytest.main()

test_work1.py

#encoding=utf-8import pytest#@pytest.mark.skip()class TestWork:    @pytest.mark.smoke    def test_h(self,home_url):        print("用例:%s" % home_url)    @pytest.mark.skipif(8<24,reason='版本不匹配')    def test_work1(self):        assert 1 == 1    def test_work2(self):        assert 1 == 1if __name__ == '__main__':    pytest.main()

执行命令

D:\project_development\api_pytest>pytest -k 2

在这里插入图片描述


在这里插入图片描述

来源地址:https://blog.csdn.net/YZL40514131/article/details/127601200

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

pytest运行指定的测试参数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pytest fixtures函数及测试函数的参数化实例分析

这篇文章主要介绍“pytest fixtures函数及测试函数的参数化实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytest fixtures函数及测试函数的参数化实例分析”文章能帮助大
2023-06-30

如何测试运行命令的 Go 函数?

来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《如何测试运行命令的 Go 函数?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!问题内容按照 https://golan
如何测试运行命令的 Go 函数?
2024-04-04

PHP如何使用三元运算符测试数字是否大于指定数

这篇文章主要为大家展示了“PHP如何使用三元运算符测试数字是否大于指定数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PHP如何使用三元运算符测试数字是否大于指定数”这篇文章吧。首先简单给大家介
2023-06-20

Shell脚本创建指定大小文件的测试数据

我们在测试或调试的时候,有时候会需要生成某个size的文件,比如在测试存储系统时,需要将磁盘剩余空间减少5G,最简单的办法就是拷贝一个5G的文件过来,但是从哪儿去弄这样大小的文件呢,或许你想到随便找一个文件,不停的拷贝,最后合并,这也不失为
2022-06-04

PostgreSQL运行在FreeBSD和Linux的表现的测试数据是什么

今天就跟大家聊聊有关PostgreSQL运行在FreeBSD和Linux的表现的测试数据是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天下午我本想测试下DragonFly d
2023-06-16

数据库压力测试:掌握数据库性能极限,确保关键数据稳定运行

数据库压力测试作为一种常见的数据库性能测试手段,能够有效发现数据库系统在高并发、大数据等场景下的性能瓶颈,确保关键数据稳定运行,保障企业业务的连续性。
数据库压力测试:掌握数据库性能极限,确保关键数据稳定运行
2024-02-22

如何测试阿里云服务器配置参数是否正常一份详细的指南

如何测试阿里云服务器配置参数是否正常本篇文章将深入探讨如何测试阿里云服务器的配置参数是否正常,包括测试方法、测试工具和注意事项等。测试阿里云服务器配置参数是否正常是确保服务器稳定运行的关键步骤。这不仅可以帮助我们及时发现并解决潜在问题,还可以确保服务器的性能达到预期。下面是一些详细的测试方法和工具。1.基础硬件测
如何测试阿里云服务器配置参数是否正常一份详细的指南
2024-01-26

具有 3 个不同指针类型的参数(可以为 nil)的 Sprintf。三元运算符不可用,如何避免写几十行?

php小编子墨在这里为大家解答一个关于Sprintf函数的问题。有时候我们需要使用Sprintf函数来格式化字符串,但是在某些情况下,我们可能会遇到具有三种不同指针类型的参数的情况,而且这些参数可能为nil。在这种情况下,我们无法使用三元运
具有 3 个不同指针类型的参数(可以为 nil)的 Sprintf。三元运算符不可用,如何避免写几十行?
2024-02-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录