首页 > 其他分享 >Pytest框架 — 14、Pytest的标记(五)(控制测试用例执行顺序)

Pytest框架 — 14、Pytest的标记(五)(控制测试用例执行顺序)

时间:2022-08-20 17:56:48浏览次数:80  
标签:last 14 Pytest pytest mark ordering 测试用例 test order

目录

1、前言

在执行自动化测试时,我们通常都希望能够控制执行测试用例的顺序。

  • unittest框架中默认按照ACSII码的顺序加载测试用例并执行,顺序为:0~9A~Za~z,测试目录、测试模块、测试类、测试方法/测试函数都按照这个规则来加载测试用例。
  • pytest测试框架中,默认从上至下执行,也可以通过pytest-ordering插件来自定义执行顺序。

安装方式:
pip install pytest-ordering

2、使用

直接在要控制顺序的测试用例上使用@pytest.mark.order(order=顺序值)装饰器来标记执行顺序。
示例:

import pytest

@pytest.mark.run(order=4)
def test_pay():
    print("第四步:支付订单")

@pytest.mark.run(order=2)
def test_add_cart():
    print("第二步:加入购物车")

@pytest.mark.run(order=1)
def test_login():
    print("第一步:登录")

@pytest.mark.run(order=3)
def test_place_order():
    print("第三步:下订单")

"""
执行结果
mark/ordering/pytest_ordering.py::test_login 第一步:登录
PASSED
mark/ordering/pytest_ordering.py::test_add_cart 第二步:加入购物车
PASSED
mark/ordering/pytest_ordering.py::test_place_order 第三步:下订单
PASSED
mark/ordering/pytest_ordering.py::test_pay 第四步:支付订单
PASSED
"""

注意:

  1. @pytest.mark.run()必须以order=顺序值这种形式传递顺序值
  2. order值可以为正数或负数,但遵从值越小优先级越高原则
  3. order值混用正负数时,采用正数的优先级更高
  4. 没有标记顺序的用例优先级高于标记为负数的用例

3、标记最先执行和最后执行

可以通过@pytest.mark.firt@pytest.mark.last来标记用例的最先执行和最后执行。
示例:

import pytest

@pytest.mark.first
def test_login():
    print("登录")

@pytest.mark.last
def test_logout():
    print("注销")

def test_place_order():
    print("下单")

def test_pay():
    print("支付")

"""
执行结果
mark/ordering/order_first_and_last.py::test_login 登录
PASSED
mark/ordering/order_first_and_last.py::test_place_order 下单
PASSED
mark/ordering/order_first_and_last.py::test_pay 支付
PASSED
mark/ordering/order_first_and_last.py::test_logout 注销
PASSED
"""

提示:
当我们在使用@pytest.mark.first@pytest.mark.last装饰器时,python会把firstlast当成自定义标记,从而出现如下提示

PytestUnknownMarkWarning: Unknown pytest.mark is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/mark.html
    @pytest.mark.last

此时我们可以在命令行中添加-p no:warnings来屏蔽错误提示。

标签:last,14,Pytest,pytest,mark,ordering,测试用例,test,order
From: https://www.cnblogs.com/qishuaiRisen/p/16608259.html

相关文章

  • Pytest框架 — 14、Pytest的失败重试
    目录1、前言2、使用(一)命令行或main函数中使用(二)全局配置中使用(推荐用法)1、前言有时候我们测试执行由于某些原因失败了,想要多执行几次,Pytest可以使用pytest-rerunfailures......
  • Pytest框架 — 13、Pytest的标记(四)(分组执行)
    目录1、前言2、mark的使用(一)注册自定义标记(二)在测试用例上标记(三)执行3、扩展(一)在同一个测试用例上使用多个标记(二)在测试类上使用标记1、前言在自动化测试工作中我们有时......
  • 零基础学Java(14)对象构造
    对象构造之前学习了编写简单的构造器,可以定义对象的初始状态。但是,由于对象构造非常重要,所以Java提供了多种编写构造器的机制。 重载有些类有多个构造器。例如,可以如......
  • Pytest框架 — 12、Pytest的标记(三)(重复执行)
    目录1、前言2、--count参数使用(一)在命令行或者main函数使用(二)在全局配置文件中使用3、--repeat-scope参数使用4、@pytest.mark.repeat(count)装饰器使用5、结合参数x使重复......
  • C++primer练习16.1-14
    练习16.1::实例化就是模板通过实际调用而确定类型及其运算,抽象到具体练习16.2template<typenameT>intcompare(constT&v1,constT&v2){if(v1<v2)return-1;......
  • P1114 “非常男女”计划
    https://www.luogu.com.cn/problem/P1114前缀和,相对差黄色题思路:引入相对差的概念。即a[i]表示第i个位置男生人数-女生人数的差值。那么差值相等的两个位置之间的人数......
  • pytest系列——allure命令行参数详解
    一、查看allure命令的帮助文档allure-hallure命令的语法格式allure[options][command][commandoptions]options列表Options:--help命令行帮助文档......
  • luogu P1488 肥猫的游戏
    肥猫的游戏P1488肥猫的游戏-洛谷|计算机科学教育新生态(luogu.com.cn)题目描述野猫与胖子,合起来简称肥猫,是一个班的同学,他们也都是数学高手,所以经常在一起讨论数......
  • Pytest系列(2-3)-conftest详解
    什么是conftest.py可以理解成一个专门存放fixture的配置文件 实际开发场景多个测试用例文件(test_*.py)的所有用例都需要用登录功能来作为前置操作,那就不能把登录功能写......
  • Pytest系列(2-1)-fixture的详细使用
    前言前面一篇讲了setup、teardown可以实现在执行用例前或结束后加入一些操作,但这种都是针对整个脚本全局生效的如果有以下场景:用例1需要先登录,用例2不需要登录,用例......