BDD - Python Behave 用户自定义命令行选项 -D

BDD - Python Behave 用户自定义命令行选项 -D

  • 引言
  • behave -D
  • behave -D 应用
    • feature 文件
    • behave.ini 配置文件
    • step 文件
    • 执行

引言

日常运行测试用例,有时需要自定义命令行参数,比如不同环境的对应的配置是不一样的,这样就需要传一个环境参数来执行,根据执行的环境选择对应的配置文件。今天就来了解一下用户自定义命令行参数选项。

想了解更多 Behave 相关的文章,欢迎阅读《Python BDD Behave 系列》,持续更新中。

behave -D

执行下面命令来查看 Behave 命令行选项

behave -h

其中 behave -D 选项是 Behave 命令行工具的一个功能,用于从命令行传递用户定义的配置参数。通过 -D 或 --define 选项,您可以设置键值对,这些键值对将存储在 context.config.userdata 中,以供测试脚本中使用,可以通过 context.config.userdata 字典来访问这些变量

-D NAME=VALUE, --define NAME=VALUE
Define user-specific data for the config.userdata dictionary. Example: -D foo=bar to
store it in config.userdata[“foo”].

使用方式如下:

behave -D key1=value1 -D key2=value2 ...

其中,key1=value1、key2=value2 是您想要传递给 Behave 测试的配置参数。
例如,如果您有一个测试需要使用用户名和密码,您可以这样传递:

behave -D username=myuser -D password=mypassword

然后,在测试脚本中,您可以通过 context.config.userdata 访问这些参数:

# 在 Behave 测试脚本中访问配置参数
username = context.config.userdata.get('username', '')
password = context.config.userdata.get('password', '')

还有一种方式,通过在配置文件 behave.ini 定义
如:

[behave.userdata]
env = dev

step 脚本里可以通过 context.config.userdata[‘env’] 访问

behave -D 应用

下面举个简单粗暴的例子
在这里插入图片描述

feature 文件

创建 user_data.feature 文件

# user_data.feature Feature: Context User Data Example@user_data
Scenario: User data scenarioGiven user data is setThen get the user data

behave.ini 配置文件

定义了用户自定义参数:
[behave.userdata]
env = dev

# behave.ini
[behave]
paths=BDD/Features/user_data
dry_run = false
format = my_html
stdout_capture = false
outfiles = my_report.html[behave.formatters]
my_html = behave_html_formatter:HTMLFormatter[behave.userdata]
env = dev

step 文件

创建 user_data_steps.py 文件
通过 context.config.userdata[‘param_name’] 来访问用户自定义的参数

# user_data_steps.pyfrom behave import *@given('user data is set')
def step_user_data_is_set(context):pass@then('get the user data')
def then_get_user_data(context):print(f"env:{context.config.userdata['env']}")print(f"user:{context.config.userdata['user']}")print(f"pw:{context.config.userdata['pw']}")

执行

在当前目录 BDD,执行命令 behave -D user=zhang -D pw=2024

-D user=zhang -D pw=2024 定义了两个自定义的变量参数

step 实现可以访问到这些参数,分别打印出了这些变量

PS C:\Automation\Test\BDD> behave -D user=zhang -D pw=2024
Feature: Context User Data Example # BDD/Features/user_data/user_data.feature:1@user_dataScenario: User data scenario  # BDD/Features/user_data/user_data.feature:4Given user data is set      # BDD/steps/user_data_steps.py:3Then get the user data      # BDD/steps/user_data_steps.py:7
env:dev
user:zhang
pw:20241 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 0 skipped
2 steps passed, 0 failed, 0 skipped, 0 undefined
Took 0m0.000s

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

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

相关文章

2023版本QT学习记录 -11- 多线程的使用(QT的方式)

———————多线程的使用(QT方式)——————— 🎄效果演示 两个线程都输出一些调试信息 🎄创建多线程的流程 🎄头文件 #include "qthread.h"🎄利用多态重写任务函数 class rlthread1 : public QThread {Q_OBJE…

C++程序设计兼谈对象模型(侯捷)笔记

C程序设计兼谈对象模型(侯捷) 这是C面向对象程序设计的续集笔记,仅供个人学习使用。如有侵权,请联系删除。 主要内容:涉及到模板中的类模板、函数模板、成员模板以及模板模板参数,后面包含对象模型中虚函数调用&…

【计算机毕业设计】SSM企业OA管理系统

项目介绍 本项目包含管理员与普通员工两种角色, 管理员角色包含以下功能: 岗位管理,部门管理,工龄奖金管理,员工管理,考勤管理,工资查询,职称管理,统计图表,工资项管理,管理员登录等功能。 员工角色包含以下功能: 个人信息管理,工资详情…

基于PHP的花店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的花店管理系统 一 介绍 此花店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈:phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 …

[蓝桥 2023 ]三带一

问题描述 小蓝和小桥玩斗地主,小蓝只剩四张牌了,他想知道是否是“三带一”牌型。 所谓“三带一”牌型,即四张手牌中,有三张牌一样,另外一张不与其他牌相同,换种说法,四张手牌经过重新排列后&am…

使用jmeter从0开始完成性能测试

使用JMeter从0开始完成性能测试 介绍 在软件开发过程中,性能测试是一项关键任务,它可以帮助我们评估系统在不同负载条件下的性能表现,发现潜在的性能瓶颈。JMeter是一款功能强大且易于使用的性能测试工具,它可以帮助我们完成各种…

网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包,并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具,能够捕获和分析网络数据包,为网络管理员和安全专业人员提供了深入了…

手写视频裁剪框

<!-- 截取框 --><divv-show"isShow"class"crop-box":style"{width: cropWidth px,height: cropHeight px,left: cropX px,top: cropY px,}"ref"cropBox"mousedown"startInteraction"><!-- 内容在这里 --…

mysql 单表 操作 最大条数验证 以及优化

1、背景 开车的多年老司机&#xff0c;是不是经常听到过&#xff0c;“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”&#xff0c;“你这个表数据都马上要到 2000w 了&#xff0c;难怪查询速度慢”。 2、实验 实验一把看看… 建一张表 CREATE TABL…

Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

1. 什么是IO Java中I/O是以流为基础进行数据的输入输出的&#xff0c;所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中&#xff0c;IO部分的内容是很庞大的&#xff0c;因为它涉及的领…

[Ray Tracing: The Rest of Your Life] 笔记

前言 开年第一篇博客~ 整理了三四个小时才整理完orz。 这一部分是光线追踪三部曲的最后一部&#xff0c;主要介绍了蒙特卡洛积分、重要性采样等内容。场景上没有什么大的改变&#xff0c;基本上就是在Cornell Box中渲染的&#xff0c;本篇主要在加速收敛&#xff0c;提升渲染效…

Docker 安装Mysql

目录 Docker Mysql安装 ✨安装和配置mysql ✨远程连接mysql远程连接 MySQL 是世界上最流行的开源数据库。根据 DB-Engines的调查数据&#xff0c;MySQL 是第二受欢迎的数据库&#xff0c;仅次于 Oracle 数据库。MySQL在过去由于性能高、成本低、可靠性好&#xff0c;已经成…

五、HTML 标题

在 HTML 文档中&#xff0c;标题很重要。 一、HTML 标题 标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。 <h1>这是一个标题。</h1> <h2>这是一个标题。&l…

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…

bootstrap5实现宠物商店网站 Cat-Master

一、需求分析 宠物商店网站是指专门为宠物商店或宠物用品商家而建立的在线平台。这种网站的功能通常旨在提供以下服务&#xff1a; 产品展示&#xff1a;宠物商店网站通常会展示宠物食品、玩具、床上用品、健康护理产品等各种宠物用品的图片和详细信息。这样&#xff0c;潜在的…

MybatisPlus—快速入门

目录 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 1.2 定义Mapper 2.MybatisPlus常用注解 2.1 TableName 2.2 TableId 2.3 TableField 2.4 小结 3. 常用配置 4. 总结 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 MyBatisPlus官方提…

安徽省暨合肥市“希望工程·梦想计划”小盖茨机器人捐赠启动仪式举行

1月5日&#xff0c;安徽省暨合肥市“希望工程梦想计划”小盖茨机器人捐赠启动仪式在合肥市一六八玫瑰园学校东校区举行。共青团安徽省委副书记叶征&#xff0c;北京儒布特教育科技有限公司董事牛俊明&#xff0c;北京儒布特教育科技有限公司市场总监高进&#xff0c;安徽省青基…

基于JavaWeb+SSM+Vue四六级词汇微信小程序系统的设计和实现

基于JavaWebSSMVue四六级词汇微信小程序系统的设计和实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 &#xff08;1&#xff09;课题背景 伴随着社会的快速发展, 现代社…

【ASP.NET Core 基础知识】--环境设置

一、简介 1.1 .NET Core SDK 概述 .NET Core SDK&#xff08;Software Development Kit&#xff09;是Microsoft推出的一个开源跨平台框架&#xff0c;用于开发和部署.NET应用程序。它是.NET Core平台的核心组件之一&#xff0c;为开发者提供了在多个操作系统上构建高性能、可…

WPF 使用矢量字体图标

矢量字体图标 在WPF项目中经常需要显示图标&#xff0c;但是项目改动后&#xff0c;有时候需要替换和修改图标&#xff0c;这样非常麻烦且消耗开发和美工的时间。为了快速开发项目&#xff0c;节省项目时间&#xff0c;使用图标矢量字体图标是一个非常不错的选择。 矢量字体图标…