接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

一.pytest参数化

比如说登录,正确的用户名/密码和错误的用户名/密码是两组不同的参数,通过不同的参数驱动测试用例,这就是pytest的参数化。
先尝试传一个参数看看,用@pytest.mark.parametrize()方法

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

再来试试多参数多值,一个参数对应一个值,此时在后面的列表里存放元组(列表也行,不一定要是元组),每一个元组中的数据对应上前面的参数名

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

多参数对应多值,每个参数对应多个值,在列表里存放多个元组,对应的,用例依照元组个数执行多次

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序
这边的写法可以是 @pytest.mark.parametrize('one,two',[(1,2),(5,88)])
也可以是 @pytest.mark.parametrize(['one','two'],[(1,2),(5,88)]),都是映射赋值

如果是给一个测试用例多个parametrize呢

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

这边的参数还有几个特性:

  1. 只要定义了就一定要用到
  2. 测试用例里定义参数时,不能给参数默认值,比如def test_003(one,two=2)是不被允许的

这边的值有以下几个特性:

  1. 如果使用到元组的话,元组里的个数与参数个数必须相等,像’a,b’ [(1,2,3)],两个参数对上三个值,会报错
  2. 可以用元组,列表来装值,也可以用集合set()来装,但不推荐,set会去重
  3. 如果参数只有一个,可以有多个值与其对应,如 @pytest.mark.parametrize('one_parma',['test',1,2,3])

用例代码:

import pytest

@pytest.mark.parametrize('one_parma',['test',1,2,3])
def test_param(one_parma):
    assert  one_parma == 'test'

@pytest.mark.parametrize('one,two',[(1,2)])
def test_002(one,two):
    assert  one+1==two

@pytest.mark.parametrize(['one','two'],[(1,2),(5,88)])
def test_003(one,two):
    assert  one+1==two

@pytest.mark.parametrize('a',[1,2,3])
@pytest.mark.parametrize('b,c',[(4,5),(6,7)])
def test_004(a,b,c):
    print(a,b,c)

二.pytest常用标记skip,xfail

skip标记: 只有当满足某条件时才执行测试用例,否则跳过执行这个用例
xfail标记: 因为一个确切的原因,知道打上xfail标记的用例会失败,

skip

1.在用例上方加上@pytest.mark.skip()跳过执行该用例

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序
2.为skip添加条件,满足条件则skip用例的执行
接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

3.skip的条件还可以定义在文件夹下面的公共函数conftest.py里面

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

然后在相应的用例文件里调用一下定义的这个skip_reason,就可以跳过用例的执行了

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

4.在类里使用skip
最基础的,在类上方加个skip,没啥好说的

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

; xfail

1.先跑个简单的例子看看

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

2.也可以把xfail写在函数内部,也会生效,xfail语句前的语句会执行,xfail后的语句不会执行

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

skip里有skipif的用法,xfail也有类似的用法(注意不是xfailif),满足if条件就会执行xfail,认为用例将会执行失败,如果不满足条件的话就会报错

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

xfail,skip与参数parametrize结合起来使用

其中用到了pytest.param来包装一组参数,并为这组参数使用了skip或者xfail的方法,具体用法可以搜下

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序
@pytest.mark.parametrize(
    'n,expected',
    [
        (1,1),
        pytest.param(2,1,marks=pytest.mark.xfail(),id='xfail'),
        pytest.param(3,3,marks=pytest.mark.skip,id='skip')
    ]
)
def test_conbine(n,expected):
    assert n == expected

三.pytest用例的执行顺序

首先,如果没有预先指定的话,pytest直接执行所有模块下的测试用例的话,它会把.py文件根据文件名的首字母排序,然后按顺序执行文件中的测试用例(也就是根据ACSCII码来排序,然后执行文件里的用例)。
其次,在文件内部,没有预先指定的情况下,pytest默认从上到下执行文件里的用例。

如果要人为指定运行顺序的话,先安装库pytest-ordering

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

然后就可以在代码里使用方法pytest.mark.run(order=)来指定运行顺序

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

; 四.生成测试报告

借助第三方插件 pytest-html

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

然后在项目里新建一个reports文件夹,所有的测试报告都放在下面。并且新建一个run.py文件,用来运行指定的测试用例并最终生成测试报告。

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

然后我们打开reports下面的html测试报告

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

Original: https://blog.csdn.net/qq_38175040/article/details/118539603
Author: 336699强强
Title: 接口自动化测试(三)_pytest参数化,skip/xfail,用例执行顺序

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/776324/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基于支持向量机的图像分类系统(MATLAB GUI界面版)

    摘要:本文详细介绍基于支持向量机的图像分类系统,给出 M A T L A B_的算法介绍及界面设计过程。在界面中可点击选择图片或带图片的文件夹,系统自动对所涉及图片进行识别分类,可…

    Python 2023年10月29日
    052
  • pandas 层级索引

    pandas 笔记007 import pandas as pd import numpy as np 创建 Series使用 Index指定内外索引,第一个内层列表是外层索引,第…

    Python 2023年8月9日
    045
  • Python处理Excel表格——了解Groupby与merge的用法

    作为数据分析师日常工作中会遇到各种各样的数据处理需求, 因为数据量巨大的原因无法手动处理表格,正好会应用Python工具,今天就借此机会来展示Pandas中Groupby与Merg…

    Python 2023年8月27日
    063
  • Python网络爬虫-numpy函数

    import numpy as np print(‘连接两个字符串:’)print (np.char.add([‘hello’, &…

    Python 2023年8月30日
    061
  • Python numpy.abs和abs函数别再傻傻分不清了

    不知道小伙伴们在写代码的时候有没有区分开numpy.abs和abs函数,别小看这两个函数,如果在写程序的时候正确区分使用这两个函数可以使自己的程序运行效率大大提升。 别看这两个函数…

    Python 2023年8月23日
    062
  • python中的decorator装饰器(上)

    在理解装饰器的概念前,我们首先看一下function和inner function在python中的含义。 function与inner function function:在py…

    Python 2023年11月2日
    049
  • Pytest_allure 数据驱动框架分享

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年9月13日
    058
  • 【疑难杂症】两DataFrame的时间索引反向/求差集,查找缺失时间数据

    两DataFrame的时间索引反向/求差集,查找缺失时间数据 1 构造两个时间DataFrame数据 2 目的 3 实现方式 * 3.1 方式一 3.2 方式二 3.3 方式三 手…

    Python 2023年8月8日
    072
  • (2.0版本)企业微信可信域名,个人添加企业微信可信IP方法

    在好用了20天之后,本方法域名又被嘎了,目前免费方法去百度云的函数计算,逻辑相同,自己摸索吧,对于开发的你们,应该没什么难度,实在不会的→有偿 dy&wx: xytx_00…

    Python 2023年8月13日
    080
  • MySQL 笔记二

    表的创建及数据类型 字段类型 整型 小数 时间 字符串 文本 枚举 enum 集合 set 创建数据表 字段属性 删除表结构 修改数据表结构 数据操作 DML 语句 插入数据 蠕虫…

    Python 2023年6月3日
    093
  • 1229(定积分+numpy)

    数学基础篇(定积分) 1 定积分的概念: 1.1 定积分的定义 注意:定积分是积分的一种,是函数f(x)在区间[a,b]上积分和的极限。定积分与不定积分之间的关系: 若定积分存在,…

    Python 2023年8月26日
    040
  • 常见气象数据获取方式及批量下载代码汇总

    气象数据获取因其数据源多、请求规则不一,格式复杂、体积庞大,所以经常成为气象小白的噩梦。这里收集了一些常用气象数据下载方法及下载的代码,供大家参考 1. 中国气象数据网(这是最官方…

    Python 2023年10月26日
    048
  • matlab 程序改写为 python 程序的方法

    将 matlab 代码改写为 python 代码是有技巧的,如果掌握,其实还是比较容易将一个 matlab 程序改写为 python 程序的。因为 python 有很多优秀的数据处…

    Python 2023年8月23日
    032
  • 移动云搭建Django:提示That IP address can‘t be assigned to.

    移动云主机环境: 1、操作系统:centos 7.6 2、python解释器:调整为了3.6.8 如果你的python解释器是2.*版本的:建议:yum install -y py…

    Python 2023年8月6日
    054
  • VS_2019利用pip安装pygame

    目录 一、关于pip出现的问题及解决 1. 首先找到pip.exe文件的路径:​​ 2. 将该路径复制到环境变量中: 3.验证 二、pygame的安装 1.首先应该进入到自己安装的…

    Python 2023年9月21日
    098
  • 1-pytest 入门

    文章目录 * – 环境搭建 – pytest框架特点 – 命名规则 – 简单示例 环境搭建 使用pip安装pytest: pip i…

    Python 2023年9月14日
    058
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球