当前位置: 首页 > news >正文

深度解析 pytest 参数化与 --count 执行顺序的奥秘

有这样一个业务场景,登录不同地区的账号,重复500遍,以验证登录功能是否正常。

登录的代码如下,其中login_data是一个fixture,用来组织数据:

@pytest.mark.parametrize("login_data", ['cn_test', 'us', 'eu'], indirect=True) 
def test_login_change_region(appium_service, ios_driver, login_data):...

那么如何实现重复登录500遍呢?按照之前文章介绍过的内容来说,在设置--count 500即可,但这样你会发现,'cn_test'登录了500遍、'us'登录了500遍、'eu'登录了500遍。

之前文章讲过,两个parametrize中的参数会按照笛卡尔积进行排序,当时我们并没有关心它们的执行顺序,例如像下面这样写,执行结果会怎样呢?

@pytest.mark.parametrize("repeat_count", list(range(2)))
@pytest.mark.parametrize("login_data", ['cn_test', 'us', 'eu'], indirect=True) 
def test_login_change_region(appium_service, ios_driver, login_data, repeat_count: int):...

首先总次数肯定是6次,没问题,那么顺序呢?实际执行的顺序是这样的:

'cn_test'登录了2遍、'us'登录了2遍、'eu'登录了2遍。不是第1遍登录'cn_test'、'us'、'eu',第2遍登录'cn_test'、'us'、'eu'。

那么如果我就是想要 第1遍登录'cn_test'、'us'、'eu',第2遍登录'cn_test'、'us'、'eu' 如何实现呢?

这里介绍一种方法,手动组合参数以获得所需的执行顺序:

@pytest.mark.parametrize("login_data", ['cn_test', 'us', 'eu'] * 2, indirect=True)  # 重复2次
def test_login_change_region(appium_service, ios_driver, login_data):# 登录逻辑

这样得到的顺序就是:第1遍登录'cn_test'、'us'、'eu',第2遍登录'cn_test'、'us'、'eu'了。

【总结】

同样的操作,但是不同的执行顺序可能会发现不同的问题,这样就需要我们控制测试方法的执行顺序,所以我们不仅要考虑如何编写测试方法,还有考虑它们的执行顺序。

相关文章:

深度解析 pytest 参数化与 --count 执行顺序的奥秘

有这样一个业务场景,登录不同地区的账号,重复500遍,以验证登录功能是否正常。 登录的代码如下,其中login_data是一个fixture,用来组织数据: pytest.mark.parametrize("login_data", [cn_test, …...

【traefik】forwadAuth中间件跨namespace请求的问题

前情提要 - fowardAuth鉴权中间件的使用: 【traefik】使用forwardAuth中间件做网关层的全局鉴权 1. 问题 我的 traefik-ingress-controller 所在 namespace: traefik 业务服务所在 namespace: apps 路由与 forwardAuth 中间件配置如下: # 路由 apiV…...

java学习记录16

并发基础 进程与线程 进程 进程(Process)是计算机中正在运行的程序。程序是一种静态的概念,而进程是程序在执行过程中创建的动态实体。每个进程都有自己的内存空间、代码、数据和资源,它也是操作系统进行任务调度和资源分配的基…...

【Lua学习之旅】之单行/多行注释

Lua的注释 单行注释多行注释 单行注释 lua中的单行注释采用两个短横线"--" --这是lua单行注释多行注释 写法一: --[[ 这个lua的多行注释, 很多资料说多行注释不可以嵌套, 根据我的测试,这种写法的多行注释在lua54版…...

[Effective C++]条款45 运用成员函数模板接受所有兼容类型

本文初发于 “天目中云的小站”,同步转载于此。 条款45 : 运用成员函数模板接受所有兼容类型 本条款中我们将会以智能指针为例, 介绍如何通过成员函数模板使一个模板类可以接受所有兼容类型. 我们先来构建一个简单的继承体系 : class Top { ... }; class Middle: p…...

Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能

Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能 基于SpringBoot3Vue3前后端分离的Java快速开发框架 项目简介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-P…...

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…...

解决Qt打印中文字符出现乱码

在 Windows 平台上,默认的控制台编码可能不是 UTF-8,这可能会导致中文字符的显示问题。 下面是在 Qt 应用程序中设置中文字体,并确保控制台输出为 UTF-8 编码: 1. Qt 应用程序代码 在 Qt 中,我们可以使用 QApplic…...

第三十八章 Spring之假如让你来写MVC——适配器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...

服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.

服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found. 1. 故障现象2. 解决思路3. 故障分析4. 案件回溯5. 解决问题 1. 故障现象 有一台服务器业务报无法连接. 尝试用Ping命令发现无法ping通. 通过控制台查看发现有以下报错: error: ..…...

昵称 校验

1. 基本格式校验 1. 长度限制 • 设置最小和最大字符长度&#xff1a;2-20 个字符&#xff08;常见范围&#xff09;。 • 避免昵称过短或过长影响显示和识别。 • 示例&#xff1a; • 2 ≤ 长度 ≤ 20&#xff1a;let minLength 2 let maxLength 20 if nickname.count <…...

MATLAB学习笔记目录

MATLAB学习笔记-生成纯音并保存-CSDN博客 MATLAB学习笔记-各种格式之间的转换 - 知乎 MATLAB学习笔记-胞组&#xff08;cell array&#xff09;转换为矩阵&#xff0c;cell2mat_matlab如何把元胞数组改为矩阵-CSDN博客MATLAB学习笔记-判断数组、结构体、数值、字符串是否相同…...

基于单片机的语音控制玩具汽车的设计

语音控制小汽车选用了两个单片机、一个语音识别芯片、两个无线收发模块、一个电机驱动模块、两个电机、一个音频解码模块。语音控制端选用了一个语音识别芯片&#xff0c;实现了将声音信号转换成数字信号&#xff0c;再将数据传输给单片机的功能。小车端选用了单片机来控制电机…...

Qt WORD/PDF(五)使用Json一键填充Word表格

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: 《Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作》 《Qt WORD/PDF&#…...

vue3+ts的几个bug调试

由于编译问题&#xff0c;把几个type检查给关闭了&#xff0c;否则错误太多。 1&#xff09;第一个检查出的问题&#xff0c;拼写错误数组的length&#xff0c;写成了lengh。 2&#xff09;数组的对象引用。 torStatus Array(8).fill({ ...defaultStatus }) as TorStatus[]…...

DVWA靶场CSRF漏洞通关教程及源码审计

目录标题 CSRFlow源码审计 medium源码审计 high源码审计 impossible源码审计 CSRF low 先修改密码 看到地址栏 复制在另一个网页打开 成功登录 源码审计 没有任何过滤措施&#xff0c;很危险&#xff0c;并且采用了不安全的md5加密 <?phpif( isset( $_GET[ Change ] )…...

前端开发:HTML常见标签

1.注释标签 注释不会显示在界面上 . 目的是提高代码的可读性 . ctrl / 快捷键可以快速进行注释 / 取消注释 . <!-- 我是注释 --> 2.标题标签 有六个 , 从 h1 - h6. 数字越大 , 则字体越小 <h1> hello </h1> //我们所写的csdn的格式中的标题一…...

【机器学习】主动学习-增加标签的操作方法-样本池采样(Pool-Based Sampling)

Pool-Based Sampling Pool-based sampling 是一种主动学习&#xff08;Active Learning&#xff09;方法&#xff0c;与流式选择性采样不同&#xff0c;它假设有一个预先定义的未标注样本池&#xff0c;算法从中选择最有价值的样本进行标注&#xff0c;以提升模型的性能。这种…...

【Rust自学】11.9. 单元测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.9.1. 测试的分类 Rust把测试分为两类&#xff0c;一个是单元测试&#xff0c;一个是集成测试。 单元测试比较小也比较专注&#xff…...

深入理解Web存储机制:Cookie、SessionStorage与LocalStorage的区别

文章目录 前言一、Cookie简介二、SessionStorage简介三、LocalStorage简介四、三者之间的比较五、最佳实践建议结语 前言 随着Web应用程序变得越来越复杂&#xff0c;开发者需要更有效的办法来管理客户端数据。Cookie、SessionStorage和LocalStorage是三种常用的Web存储机制&a…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...