httprunner用例结构(前后置)

说明:httprunner 结合 pytest 的前后置方式

1. 用例级别前后置

1.1. setup teardown

class TestCaseRefTestcase(HttpRunner):# 用例级别前后置def setup(self):logger.warning("------用例级别前置")def teardown(self):logger.warning("------用例级别后置")config = (Config("request methods testcase: reference testcase").variables(**{"foo1": "testsuite_config_bar1","expect_foo1": "testsuite_config_bar1","expect_foo2": "config_bar2",}).base_url("https://postman-echo.com").verify(False))teststeps = [Step(RunTestCase("request with functions").with_variables(**{"foo1": "testcase_ref_bar1", "expect_foo1": "testcase_ref_bar1"}).call(Requests).export(*["foo3"])),Step(RunRequest("post form data").with_variables(**{"foo1": "bar1"}).post("/post").with_headers(**{"User-Agent": "${get_user_agent()}","Content-Type": "application/x-www-form-urlencoded",}).with_data("foo1=$foo1&foo2=$foo3").validate().assert_equal("status_code", 200).assert_equal("body.form.foo1", "bar1").assert_equal("body.form.foo2", "bar21")),]if __name__ == "__main__":TestCaseRefTestcase().test_start()

2. 类级别前后置

2.1. setup_class

    def setup_class(self):logger.warning("------类级别前置")

2.2. teardown_class

    def teardown_class(self):logger.warning("------类级别后置")

3. 模块级别前后置

3.1. conftest.py

import uuid
from typing import Listimport pytest
from httprunner import Config, Step
from loguru import logger@pytest.fixture(scope="session", autouse=True)
def session_fixture(request):"""setup and teardown each task"""logger.warning(f"-------conftest模块级别前置---------")total_testcases_num = request.node.testscollectedtestcases = []for item in request.node.items:testcase = {"name": item.cls.config.name,"path": item.cls.config.path,"node_id": item.nodeid,}testcases.append(testcase)logger.debug(f"collected {total_testcases_num} testcases: {testcases}")yieldlogger.debug(f"teardown task fixture")logger.warning(f"-------conftest模块级别后置---------")# teardown task# TODO: upload task summary@pytest.fixture(scope="function", autouse=True)
def testcase_fixture(request):"""setup and teardown each testcase"""logger.warning(f"-------conftest函数级别前置---------")config: Config = request.cls.configteststeps: List[Step] = request.cls.teststepslogger.debug(f"setup testcase fixture: {config.name} - {request.module.__name__}")def update_request_headers(steps, index):for teststep in steps:if teststep.request:index += 1teststep.request.headers["X-Request-ID"] = f"{prefix}-{index}"elif teststep.testcase and hasattr(teststep.testcase, "teststeps"):update_request_headers(teststep.testcase.teststeps, index)# you can update testcase teststep like thisprefix = f"HRUN-{uuid.uuid4()}"update_request_headers(teststeps, 0)yieldlogger.warning(f"-------conftest函数级别前置---------")logger.debug(f"teardown testcase fixture: {config.name} - {request.module.__name__}")summary = request.instance.get_summary()logger.debug(f"testcase result summary: {summary}")

4. 优先级顺序效果展示

testcases\debug\ref_testcase_test.py 2024-03-01 17:55:21.271 | WARNING  | testcases.debug.conftest:session_fixture:12 - -------conftest模块级别前置---------
2024-03-01 17:55:21.273 | DEBUG    | testcases.debug.conftest:session_fixture:23 - collected 1 testcases: [{'name': 'request methods testcase: reference testcase', 'path': 'D:\\httprunner\\demo\\testcases\\debug\\ref_testcase_test.py', 'node_id': 'testcases/debug/ref_testcase_test.py::TestCaseRefTestcase::test_start'}]
2024-03-01 17:55:21.274 | WARNING  | testcases.debug.ref_testcase_test:setup_class:18 - ------类级别前置
2024-03-01 17:55:21.275 | WARNING  | testcases.debug.conftest:testcase_fixture:37 - -------conftest函数级别前置---------
2024-03-01 17:55:21.275 | DEBUG    | testcases.debug.conftest:testcase_fixture:41 - setup testcase fixture: request methods testcase: reference testcase - testcases.debug.ref_testcase_test
2024-03-01 17:55:21.276 | WARNING  | testcases.debug.ref_testcase_test:setup:25 - ------用例级别前置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Vue中处理接口返回的二进制图片数据

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Android使用WebView打开外部网页链接

发布Android应用,除了用原生开发外,更多是采用内嵌H5网页的方式来做,便于更新以及多平台使用。 一、第一种方式是直接通过WebView打开外部H5链接。 新建Android工程 直接创建一个工程,点击运行就可以了,打开是个空页…

2024 批量下载公众号文章内容/阅读数/在看数/点赞数/留言数/粉丝数导出pdf文章备份(带留言):公众号记忆承载近1500篇历史文章在线查看,找文章方便了

关于公众号文章批量下载,我之前写过很多文章: 视频更新版:批量下载公众号文章内容/话题/图片/封面/音频/视频,导出html,pdf,excel包含阅读数/点赞数/留言数 2021陶博士2006/caoz的梦呓/刘备我祖/六神读金…

打造禹州中医药大模型,以AI驱动业务创新(内附孙思邈GPT内测版)

大禹智库 第78 期(总第409 期) 2024年 3 月 4 日 在中医药传承与发展的关键时期,结合许昌市的地域特色和产业优势,大禹智库提出“打造禹州中医药大模型,以AI驱动业务创新”的战略构想。本报告围绕构建禹州中医药现代化…

旅游陪同翻译,英译中需要具备什么能力!

随着中国旅游业的蓬勃发展,越来越多的外国游客选择踏足这片充满魅力的土地。然而,语言障碍常常成为他们探索中国文化的绊脚石。在这时,旅游陪同翻译应运而生,为游客提供了便捷的语言沟通服务,让他们的旅程更加顺畅和愉…

河北省国际光伏展览会

能源是国民经济发展的重要基础之一。随着国民经济的发展,能源的缺口增大,能源安全及能源在国民经济中的地位越显突出。我国是世界上少数几个能源结构以煤为INVITATION主的国家之一,也是世界上最大的煤炭消费国,燃煤造成的环境污染…

云轴科技ZStack荣获证券基金行业信息技术应用创新联盟年度优秀成员奖

近日,由中国证监会科技监管司、上海市经济和信息化委员会及上交所理事会科技发展委员会指导,证券基金行业信息技术应用创新联盟(简称信创联盟)主办的2023年年度工作会议在上海成功举办。会议汇聚了来自监管机构、政府机构、行业侧…

Spring Cloud Gateway自定义断言

问题:Spring Cloud Gateway自带的断言(Predicate)不满足业务怎么办?可以自定义断言! 先看Spring Cloud Gateway是如何实现断言的 Gateway中断言的整体架构如下: public abstract class AbstractRoutePred…

【kerberos】hadoop集群使用keytab认证的逻辑

一、背景: haoop的kerberos认证核心是org.apache.hadoop.security.UserGroupInformation类。 UserGroupInformation一般有两种:(1)apache原生的(2)cdh hdp改良过的,即cloudera改良过的。 由此衍…

Flink并行度

1、Task flink中每个算子就是一个Task,比如flatMap、map、sum是一个Task。 2、SubTask 算子有几个并行度SubTask的数量就是几,比如 3、算子并行度 算子并行度指的是每个算子的并行度,可用env.setParallelism(1);设置所有算子的并行度&am…

基于Jupyter快速入门Python,Numpy,Scipy,Matplotlib

文章目录 Jupyter 和 Colab 笔记本PythonPython 版本基础数据类型数字Numbers布尔值Booleans字符串Strings 容器列表List字典Dictionaries集合Sets元组Tuples 函数类 Numpy数组Array数组索引Array indexing数据类型DatatypesArray math广播Broadcasting Scipy图像操作MATLAB文件…

goby的安装和使用

简介 Goby是一款基于网络空间测绘技术的新一代网络安全工具,它通过给目标网络建立完整的资产知识库,进行网络安全事件应急与漏洞应急。 Goby可提供最全面的资产识别,目前预置了超过10万种规则识别引擎,能够针对硬件设备和软件业…

一键查看:大厂网站都用了啥技术栈,有图有真相。

本次我们采用Wappalyzer插件来看下国内大厂的网站都采用了什么技术架构,文章最后由Wappalyzer的安装方法。 今日头条网站 淘宝网站 哔哩哔哩 京东商城 花瓣网 CSDN 国务院 网易 58同城 腾讯网 如何安装Wappalyzer 用Edge浏览器即可

Java后端八股笔记

Java后端八股笔记 Redis八股 上两种都有可能导致脏数据 所以使用两次删除缓存的技术,延时是因为数据库有主从问题需要更新,无法达到完全的强一致性,只能达到控制一致性。 一般放入缓存中的数据都是读多写少的数据 业务逻辑代码&#x1f44…

9、JavaWeb-文件上传-配置文件

P146 案例-文件上传-简介 文件上传,将本地图片、视频等文件上传到服务器,供其他用户浏览下载的过程。 文件上传前端页面三要素: 如果前端表单的编码格式选择的默认编码方式x-www.form-urlencoded,则提交的文件仅仅是文件名&…

【C++ STL详解】——string类

目录 前言 一、string类对象的常见构造 二、string类对象的访问及遍历 1.下标【】(底层operator【】函数) ​编辑 2.迭代器 3.范围for 4.at 5.back和front 三、string类对象的容量操作 1.size 和 length 2.capacity 3.empty 4.clear 5.res…

JVM-虚拟机栈概述

背景:由于跨平台的设计,java指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器。 栈是运行时单位,而堆是存储的单位。即:栈解决程序运行的问题,即程序如何执行,或者说如何…

JavaWeb——013SpringBootWeb综合案例(事务管理、AOP)

事务&AOP 目录 事务&AOP1. 事务管理1.1 事务回顾1.2 Spring事务管理1.2.1 案例1.2.2 原因分析1.2.3 Transactional注解 1.3 事务进阶1.3.1 rollbackFor1.3.3 propagation1.3.3.1 介绍1.3.3.2 案例 2. AOP基础2.1 AOP概述2.2 AOP快速入门2.3 AOP核心概念 3. AOP进阶3.1 …

ai直播数字人:AI大模型应用开发的神奇世界

当AI技术的发展走向一个新的高峰,AI直播数字人逐渐成为人们关注的焦点。这种全新的数字人形态,通过大模型应用开发,带来了一个神奇世界。 在这个神奇世界里,AI直播数字人可以展现出与真实人类相媲美的外貌和声音。通过先进的图像…