--需要先安装pytest

【1】数据驱动@pytest.mark.parametrize:

@pytest.mark.parametrize只对于同一用例不同数据的传参

①只有一个参数时

datatest04=['zhangsan','lisi']

@pytest.mark.parametrize('user', datatest04)

def test_04(self,user):

print(user)

②多个参数时

@pytest.mark.parametrize('user,password',[("zhangsan","111111"),("lisi","222222")])

def test_02(self,user,password):

print(user,password)

【2】标记,选择性执行用例@pytest.mark.标签名(标签名自定义)

pytest提供了一个非常好用的mark功能,可以给测试用例打上各种各样的标签,运行用例时可以指定运行某个标签。mark功能作用就是灵活的管理和运行测试用例。

标签既可以打到方法上,也可以打到类上,标记的两种方式:

直接标记类或方法或函数:@pytest.mark.标签名

执行:

if name == 'main':

pytest.main(['-m qc and beta', '-s']) # 执行标签名叫qc与beta的用例,其中不需要加引号

【3】跳过用例 @pytest.mark.skip()

可以装饰类也可以装饰方法,分三种情况使用skip()

@pytest.mark.skip() #1、跳过方法或用例,未备注原因

@pytest.mark.skip(reason='跳过一个方法或一个测试用例') #2、跳过方法或用例,备注了原因

@pytest.mark.skipif(1==1,reason='跳过一个方法或一个测试用例') #3、当条件满足,跳过方法或用例,备注了原因

condition表示跳过用例的条件。

reason表示跳过用例的原因。

【4】标记预期失败 @pytest.mark.xfail()

@pytest.mark.xfail(condiition, reason, [raises=None, run=True, strict=False])

condition,预期失败的条件,当条件为真的时候,预期失败。

reason,失败的原因。

【5】用例失败重跑@pytest.mark.flaky()

@pytest.mark.flaky(reruns=重试次数, reruns_delay=次数之间的延时设置(单位:秒))

if name == 'main':

pytest.main(['--reruns', '3', '--reruns-delay', '5'])

pytest --reruns 2 --reruns-delay 5  表示:运行失败的用例可以重新运行3次,第一次和第二次的间隔时间为5秒钟

【6】固件 @pytest.fixture()

固件(Fixture)是一些函数,pytest 会在执行测试函数之前(或之后)加载运行它们,也称测试夹具。

fixture修饰器来标记固定的工厂函数,在其他函数,模块,类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作。

方法:fixture(scope="function", params=None, autouse=False, ids=None, name=None) 常用参数:

“scope”:被标记方法的作用域“function" (default):作用于每个测试方法,每个test都运行一次

"class":作用于整个类,每个class的所有test只运行一次

"module":作用于整个模块,每个module的所有test只运行一次

"session:作用于整个session(慎用),每个session只运行一次

“params”:(list类型)提供参数数据,供调用标记方法的函数使用

“autouse”:是否自动运行,默认为False不运行,设置为True自动运行

【7】用例执行的先后顺序@pytest.mark.run()

用法:@pytest.mark.run(order=x)当X的值越小优先级越高,比如1,2,3,执行的顺序就是1,2,3

【8】allure的装饰类

使用方法 参数值 参数说明

@allure.epic() epic描述 敏捷里面的概念,定义史诗,往下是feature

@allure.feature() 模块名称 功能点的描述,往下是story

@allure.story() 用户故事 用户故事,往下是title

@allure.title(用例的标题) 用例的标题 重命名html报告名称

@allure.testcase() 测试用例的链接地址 对应功能测试用例系统里面的case

@allure.issue() 缺陷 对应缺陷管理系统里面的链接

@allure.description() 用例描述 测试用例的描述

@allure.step() 操作步骤 测试用例的步骤

@allure.severity() 用例等级 blocker,critical,normal,minor,trivial

@allure.link() 链接 定义一个链接,在测试报告展现

@allure.attachment() 附件 报告添加附件

【9】多线程执行测试用例

安装插件:pip install pytest-parallel==0.0.10,安装完后无需引入,在pytest中用参数就行

--workers=n指定运行的进程数为 n,默认为1,windows系统中只能为1

--tests-per-worker=m 指定运行的线程数为 m

若两个参数都指定,则表示启动n个进程,每个进程最多启动m线程执行,总线程数=进程数*线程数

pytest.main(['-s', 'test_mzys.py', '--workers=1', '--tests-per-worker=3',"--alluredir","../../../report/allure"])

【10】线程锁

import threading

lock = threading.Lock()

lock.acquire() #请求锁

...代码...

lock.release() #释放锁

每个用例都向一个文档中写值,当多线程运行测试用例时,都会同时去写值此时就会存在写失败的情况

所以此时我们就需要向写文档的这个操作加上锁,使得调取写时得一个个的来

pytest与allure的使用的更多相关文章

  1. 接口自动化框架(Pytest+request+Allure)

    前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种, ...

  2. 【Python】使用Pytest集成Allure生成漂亮的图形测试报告

    前言 大概两个月前写过一篇<[测试设计]使用jenkins 插件Allure生成漂亮的自动化测试报告>的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jen ...

  3. pytest生成allure报告

    在pytest框架中可以用很多插件来生成测试报告,本文总结下怎么生成allure报告 allure allure是一款开源的,专门用来展示测试结果的一个工具,allure可以与很多的测试框架做集成,比 ...

  4. 接口自动化框架2-升级版(Pytest+request+Allure)

    前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 第一版入口:接口自动化框架(Pytest+request+Allure) 本次版本做了一些升级 ...

  5. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  6. pytest与Allure集成

    1.窗口的方式 重启jenkins,重新连接,继续上次的内容.(注意:点击launch,重新下载slave-agent文件,然后双击slave-agent文件进行连接.上次下载的slave-agent ...

  7. Pytest自动化测试 - allure报告进阶

    Allure除了具有Pytest基本状态外,其他几乎所有功能也都支持. 1.严重性 如果你想对测试用例进行严重等级划分,可以使用 @allure.severity 装饰器,它可以应用于函数,方法或整个 ...

  8. pytest(11)-Allure生成测试报告(一)

    Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...

  9. pytest集成Allure Report

    https://blog.csdn.net/liuchunming033/article/details/79624474#commentBox https://blog.csdn.net/lihua ...

  10. Python&Selenium&pytest借助allure生成自动化测试报告

    一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...

随机推荐

  1. dcloud打包安卓隐私政策上架问题!

    友情链接: https://ask.dcloud.net.cn/article/36937 两种方式: 方式1. 使用dcloud的方式,在打包文件中配置 隐私json文件,使用dclould封装的隐 ...

  2. ubuntu下ntp时间同步

    1. 首先安装ntp服务(ubuntu 16.02)在linux的root用户下执行以下命   sudo apt-get install  ntp (如果不是ubuntu系统则执行 yum insta ...

  3. GIS空间分析和建模复习重点2

    10.缓冲区和缓冲区分析的概念 (1)缓冲区分析分为 点缓冲区分析:一般是围绕点对象建立一定半径的圆形区域. 线缓冲区分析:沿着线的两侧建立距离为缓冲距的带状区域. 面缓冲区分析:是沿着多边形的边界建 ...

  4. go 的形参

    注意 记录一个 go 语言编程中,可能不小心忽略的一个点, 当函数的 出参 如果是 数组.结构体.字典 类型时,是不需要声明的,可以直接使用. 但是如果 出参 是 指针 类型,则必须要显示的声明. 代 ...

  5. stl关联式容器的接口和实现

    红黑树的实现就不再记录了,详情可以去github上面翻翻源代码 set的接口和实现: map的接口和实现: hash_set接口与实现 hash_map接口和实现:

  6. OpenJ_Bailian - 1088

    OpenJ_Bailian - 1088 题解:DFS记忆化搜索 记忆化搜索也可以说是动态规划,最后的答案也是从一个个子问题推导而来 #include <bits/stdc++.h> #d ...

  7. 读后笔记 -- Python 全栈测试开发 Chapter9:Postman + Newman 实现接口自动化

    9.1 Postman 工具 9.1.4 Postman 基本操作 1. Get 请求 GET 请求的参数通过 Params 设置,最后出现在 url 地址栏上,拼接在 API 后面.  2. Pos ...

  8. 使用 EMQX Cloud 桥接数据到 GCP Pub/Sub

    前不久,Google 宣布其旗下的 GCP IoT Core 即将在 2023 年 8 月 16 日停止提供服务.这意味着大量使用 GCP IoT Core 的用户可能需要将他们的 IoT 应用迁移到 ...

  9. php框架之odp-环境部署安装

    一.安装配置 1.安装很简单,创建安装目录,然后在linux上使用wget命令从获取地址下载,然后解压,最后在安装目录下执行bin/odp_install即可. 例如:(只是举例,请安装最新的版本) ...

  10. tensorflow-gpu安装遇到的坑

    tensorflow-gpu安装好导入,一直出现以下错误 折腾了好久. 错误之前也按照中国官网安装及配置各环境变量:https://tensorflow.google.cn/install/gpu 其 ...