首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pytest框架 | 运行参数实战案例剖析

Pytest框架 | 运行参数实战案例剖析

作者头像
测试小兵
发布于 2022-06-07 12:46:13
发布于 2022-06-07 12:46:13
51301
代码可运行
举报
文章被收录于专栏:猪圈子猪圈子
运行总次数:1
代码可运行

上期回顾

  1. Pytest的配置:AutoTest-Pytest环境安装配置
  2. Pytest运行参数说明:Pytest常用参数剖析 | 案例演示

本期介绍

  • 今天给大家再进行讲解下Pytest运行时另外几个份量级参数 -n、-reruns
    • -n NUM: pytest-xdist多线程运行(需要先安装pyest-xdist)
    • --reruns NUM:重试运行测试用例(需要先安装pytest-rerunfailures)

快速安装模块包

  • 在Pycharm新建requirements.txt文件,在文件里录入你这边需要安装的模块信息
    • pytest
    • pytest-html
    • pytest-xdist
    • pytest-ordering
    • pytest-rerunfailures
    • allure-pytest
  1. 在pycahrm | Termianl命令行输入pip install -r requirements.txt进行快速安装
  2. 安装完毕即可正常使用文本里的模块

进入主题运行参数

-n参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// FileName: HelloWorld.python
# -*- coding:utf-8 -*-
# auth:shichao 
# Email:695214599@qq.com

import pytest
import time


class TestLogin:
    def test_01_shichao(self):
        time.sleep(2)
        print('这是第1条测试用例')
        assert 1 < 2

    def test_02_shichao(self):
        time.sleep(2)
        print('这是第2条测试用例')
        a = "测试"
        assert "测" in a

    def test_03_shichao(self):
        time.sleep(2)
        print('这是第3条测试用例')

    def test_04_shichao(self):
        time.sleep(2)
        print('这是第4条测试用例')

    def test_05_shichao(self):
        time.sleep(2)
        print('这是第5条测试用例')

    def test_06_shichao(self):
        time.sleep(2)
        print('这是第6条测试用例')


if __name__ == '__main__':
    pytest.main()
  • pytest -vs test_one_case.py 运行参数正常运行,未加多线程执行参数测试用例运行总耗时12s+,
  • 所以当这种方式面临着几百条测试用例的时候那么我们的耗时是不是更长,此时就需要 -n 参数来解决问题
  • pytest -vs test_one_case.py -n 2 运行方式加-n参数进行运行,n=2意味着代表2个线程,看看效果
  • 发现没有当我们加了-n参数后 n=2 启动2个线程时,耗时减半了,大家还可以试试n=3 n=4的时候效果

-reruns参数

这里我们将第三条测试用例写一个错误的断言,先进行运行看是否报错,再看看我们运用重试参数-reruns的效果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// FileName: HelloWorld.python
# -*- coding:utf-8 -*-
# auth:shichao 
# Email:695214599@qq.com

import pytest
import time


class TestLogin:
    def test_01_shichao(self):
        time.sleep(2)
        print('这是第1条测试用例')
        assert 1 < 2

    def test_02_shichao(self):
        time.sleep(2)
        print('这是第2条测试用例')
        a = "测试"
        assert "测" in a

    def test_03_shichao(self):
        time.sleep(2)
        print('这是第3条测试用例')
        assert 1 == 2
        print('这里有个错误的断言,来试试我们的重试机制')

    def test_04_shichao(self):
        time.sleep(2)
        print('这是第4条测试用例')

    def test_05_shichao(self):
        time.sleep(2)
        print('这是第5条测试用例')

    def test_06_shichao(self):
        time.sleep(2)
        print('这是第6条测试用例')


if __name__ == '__main__':
    pytest.main()
  • pytest -vs test_one_case.py 运行参数正常运行,未加-reruns重试参数,正常运行到第三条测试用例进行报错了
  • 我们来试试进行加上--reruns的效果,注意哈当我们在实际命令编写时,是使用的--reruns 2 后面接上重新运行的次数,后面接2就代表重新运行2次
  • pytest -vs test_one_case.py --reruns 2 当我们加了--reruns 2 参数后我们发现第三条错误的用例,按照预期进行重试了2次

划重点:--reruns参数的作用,

  1. 做过UI自动化的同学都知道,我们很多测试用例都是基于前端页面元素加载完毕后,使用selenium的内置方法模拟人工进行UI自动化测试
  2. 如果当某次执行时页面元素因某些原因未成功加载完毕,此时我们的测试用例运行时捕捉不到页面元素,则会进行报错
  3. 所以如果我们运用到--reruns参数进行重试的目的,就是为了重试这类运行错误的测试用例二次校验是不是真的失败。
  4. 以上就是针对于-n、-reruns 运行参数的剖析,后期大家如果使用到pytest框架则会明白其中的好处,希望对大家带来帮助
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python测试社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pytest系列(11)- 失败重跑插件pytest-rerunfailures的详细使用
https://www.cnblogs.com/poloyy/category/1690628.html
小菠萝测试笔记
2020/06/09
2.7K0
pytest系列教程——1、pytest快速入门
中文翻译地址 https://learning-pytest.readthedocs.io/zh/latest/doc/intro/getting-started.html
胡八万
2022/05/16
2.2K0
pytest框架介绍
前面介绍了unittest这个自动化框架,但是这个古老的框架,还有很多不足。 于是乎,后浪出现了,今天要讲的就是pytest框架。 pytest介绍 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1、简单灵活,容易上手,文档丰富; 2、支持参数化,可以细粒度地控制要测试的测试用例; 3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests); 4、pytest具有很多第三方插件,并且可以自定义扩展 如pytest-selenium(集成selenium)、 pytest-html(完美html测试报告生成)、 pytest-rerunfailures(失败case重复执行)、 pytest-xdist(多CPU分发)、 pytest--ordering(控制测试运行的顺序) 5、测试用例的skip和xfail处理; 6、可以很好的和CI工具结合,例如jenkins
赵云龙龙
2021/04/23
1.2K0
接口自动化测试之pytest用例管理框架
文档:https://docs.pytest.org/en/latest/contents.html#toc
用户6367961
2022/11/21
9640
接口自动化测试之pytest用例管理框架
Pytest和Allure测试框架-超详细版+实战
:1. 简单灵活,容易上手;支持参数化; 测试用例的skip和xfail 处理; 2. 能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium/appium等自动化测试、接口自动化测试 (pytest+requests); 3. pytest具有很多第三方插件,并且可以自定义扩展, 比较好 用的如 pytest-allure(完美html测试报告生成) pytest-xdist (多CPU分发)等; 4. 可以很好的和jenkins集成;** 5. **
全栈程序员站长
2022/09/17
2.5K0
Pytest和Allure测试框架-超详细版+实战
测试之路 pytest接口自动化框架-插件补充及pytest装饰器扩展
上期内容主要围绕pytest配置文件进行阐述,其中包括命令行参数、失败重试、生成html版本的测试报告、分组以及文件路径设置、运行顺序等。本期就上期内容进行一点补充。
歪小王
2022/12/12
6380
测试之路 pytest接口自动化框架-插件补充及pytest装饰器扩展
Python测试框架之pytest详解
Python测试框架之前一直用的是unittest+HTMLTestRunner,听到有人说pytest很好用,所以这段时间就看了看pytest文档,在这里做个记录。
全栈程序员站长
2022/09/05
2.5K0
Python测试框架之pytest详解
Pytest常用参数剖析 | 案例演示
上一期基于环境的配置做了简单的介绍,针对Pytest灵活的单元测试框架,它的优点就在于内置方法巧妙之处
测试小兵
2022/04/14
5360
Pytest常用参数剖析 | 案例演示
自动化的并发执行
当累计的自动化测试用例比较多,规模比较大的时候,执行一次比较耗时间。 怎么样才能快速跑完一轮呢? pytest里面有个并发执行的插件, pytest-xdist 网上看到的资料都是随便写几个assert, 然后调用 "-n" 来实现并发。 这样用例毫无代表性,没有任何业务联系,不是真实地测试场景。
赵云龙龙
2021/04/23
1K0
自动化的并发执行
pytest测试框架系列(5)-常用的pytest插件
这次主要分享的是pytest常用的插件,用好这些插件,对我们做自动化测试会起很好的作用。
搁浅同学
2022/07/21
6680
pytest测试框架系列(5)-常用的pytest插件
Python pytest测试框架详解
pytest介绍: pytest是一个非常成熟的全功能的Python测试框架: 1.简单灵活,容易上手 2.支持参数化 3.测试用例的skip和xfail,自动失败重试等处理 4.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+request) 5.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest- allure(完美html测试报告生成)、pytest-xdist(多CPU分发)等 6.可以很好的和jenkins集成
全栈程序员站长
2022/11/15
3.2K0
软件测试/测试开发全日制培训|Pytest跳过用例和失败重试
在我们日常进行自动化测试时,经常会遇到功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了,如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作,这个时候pytest的跳过测试功能就能帮助我们,先跳过,等到问题解决时,恢复执行即可;同时我们还有可能会遇到需要对失败用例重新运行进行测试的情况,pytest也能满足我们的需求,本文就来给大家介绍一下Pytest跳过用例和失败重试的实现。
霍格沃兹测试开发Muller老师
2024/01/10
1770
Pytest的简单应用
Pytest是基于python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。
Criss@陈磊
2019/09/03
7150
Pytest的简单应用
pytest学习和使用15-Pytest用例失败如何重跑?(pytest-rerunfailures的简单使用)
1 简介 用例失败重跑可以使用插件pytest-rerunfailures来实现; pytest-rerunfailures有环境要求: Python 3.5-3.8, or PyPy3 pytest 5.0或更高版本 查看下自己的版本,如下: Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "
虫无涯
2023/02/20
8040
一文带你了解Pytest..
在之前的文章里我们已经学习了Python自带测试框架UnitTest,但是UnitTest具有一定的局限性
测试小兵
2023/12/15
2630
一文带你了解Pytest..
pytest框架介绍(二)
前面简单介绍了如何使用pytest, 感觉介绍得太泛泛了。个人感觉,pytest的精髓在fixture. 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解)。
赵云龙龙
2021/04/23
9860
pytest学习和使用20-pytest如何进行分布式测试?(pytest-xdist)
1 什么是分布式测试?在进行本文之前,先了解些基础知识,什么是分布式测试?分布式测试:是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。通俗的讲:分布式测试 就是活太多,一个人干费时间,那就让多个人一起干,节省了资源和时间。2 为什么要进行分布式测试?2.1 场景1:自动化测试场景自动化测试时,我们有很多用例,比如2000条用例,按照顺序执行,每条用例执行1分钟,那需要20
虫无涯
2023/03/21
1.4K0
Pytest之重运行及生成测试报告
在上一篇Pytest系列文章:Pytest之参数化,主要介绍pytest参数化讲解及实战。
可可的测试小栈
2020/09/14
9850
Pytest之重运行及生成测试报告
pytest文档22-pytest分布式执行(pytest-xdist)
平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候, 我们会用测试人力成本换取时间成本,这个时候多找个小伙伴把任务分成2部分,于是时间缩减一半。如果是十个人一起执行,1000个用例理论上只需100分钟就能完成,时间缩短到了1/10。大大节省的测试时间,为项目节省了时间成本。
上海-悠悠
2018/10/24
2.4K0
Python的pytest模块
从测试结果中可以看到,该测试共执行了两个测试样例,一个失败一个成功。同样,我们也看到失败样例的详细信息,和执行过程中的中间结果。-q即-quiet,作用是减少冗长,具体就是不再展示pytest的版本信息。
狼啸风云
2020/01/13
1.2K0
Python的pytest模块
推荐阅读
相关推荐
Pytest系列(11)- 失败重跑插件pytest-rerunfailures的详细使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验