BDD - Python Behave 配置文件 behave.ini

2023-12-29 12:28

本文主要是介绍BDD - Python Behave 配置文件 behave.ini,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BDD - Python Behave 配置文件 behave.ini

  • 引言
  • behave.ini
    • 配置参数的类型
    • 配置项
  • behave.ini 应用
    • feature 文件
    • step 文件
    • 创建 behave.ini
    • 执行 Behave
    • 查看配置默认值 behave -v

引言

前面文章 《BDD - Python Behave Runner Script》就是为了每次执行 Behave 时不用手动敲一长串选项,其实还有另外一种实现方式,那就是通过配置文件指定 Behave 的命令行参数和设置。今天就来了解一下 Behave 的配置。

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

behave.ini

behave.ini 文件是 Behave 的配置文件,用于设置 Behave 命令行选项,配置文件必须以标签 “[behave]” 开头。

配置参数的类型

  1. text 文本
    将提供的任何文本分配给配置设置
tags=smoke
  1. bool 布尔值
    为配置设置分配一个布尔值。文本描述当值为 true 时的功能。
    True 值为" 1 “,” yes ", " True “和” on "。
    False 值为“0”、“no”、“False”和“off”。
dry_run = false
  1. sequence 系列文本
    字段在新行上接受一个或多个值,例如 tags 的配置
    tag 带不带 @, Behave 都无所谓能识别到。
tags=@foo,~@bar@zap

相当于 --tags= @foo,~@bar --tags=@zap

配置项

基本上 Behave 的配置项跟 Behave 命令行选项是对应的,但是这里请注意配置项的名字并不是一一对应的,具体可参考官方文档 Behave Configuration

例如:
命令选项 –dry-run,配置项名字却是 dry_run
命令选项 –o 或 --outfile,配置项名字却是 outfiles

查看 Behave 命令行选项
执行命令:behave -h

PS C:\Automation\Test> behave -h
usage: behave [options] [ [DIR|FILE|FILE:LINE] ]+Run a number of feature tests with behave.positional arguments:paths                 Feature directory, file or file location (FILE:LINE).optional arguments:-h, --help            show this help message and exit-c, --no-color        Disable the use of ANSI color escapes.--color               Use ANSI color escapes. This is the default behaviour. This switch is    used to override a configuration file setting.-d, --dry-run         Invokes formatters without executing the steps.-D NAME=VALUE, --define NAME=VALUEDefine user-specific data for the config.userdata dictionary. Example:   -D foo=bar to store it in config.userdata["foo"].-e PATTERN, --exclude PATTERNDon't run feature files matching regular expression PATTERN.-i PATTERN, --include PATTERNOnly run feature files matching regular expression PATTERN.--no-junit            Don't output JUnit-compatible reports.--junit               Output JUnit-compatible reports. When junit is enabled, all stdout and   stderr will be redirected and dumped to the junit report, regardless of  the "--capture" and "--no-capture" options.--junit-directory PATHDirectory in which to store JUnit reports.-f FORMAT, --format FORMATSpecify a formatter. If none is specified the default formatter is       used. Pass "--format help" to get a list of available formatters.        --steps-catalog       Show a catalog of all available step definitions. SAME AS:--format=steps.catalog --dry-run --no-summary -q-k, --no-skipped      Don't print skipped steps (due to tags).--show-skipped        Print skipped steps. This is the default behaviour. This switch is used  to override a configuration file setting.--no-snippets         Don't print snippets for unimplemented steps.--snippets            Print snippets for unimplemented steps. This is the default behaviour.   This switch is used to override a configuration file setting.-m, --no-multiline    Don't print multiline strings and tables under steps.--multiline           Print multiline strings and tables under steps. This is the default      behaviour. This switch is used to override a configuration filesetting.-n NAME, --name NAME  Only execute the feature elements which match part of the given name.    If this option is given more than once, it will match against all the    given names.--no-capture          Don't capture stdout (any stdout output will be printed immediately.)    --capture             Capture stdout (any stdout output will be printed if there is afailure.) This is the default behaviour. This switch is used tooverride a configuration file setting.--no-capture-stderr   Don't capture stderr (any stderr output will be printed immediately.)    --capture-stderr      Capture stderr (any stderr output will be printed if there is afailure.) This is the default behaviour. This switch is used tooverride a configuration file setting.--no-logcapture       Don't capture logging. Logging configuration will be left intact.        --logcapture          Capture logging. All logging during a step will be captured anddisplayed in the event of a failure. This is the default behaviour.      This switch is used to override a configuration file setting.--logging-level LOGGING_LEVELSpecify a level to capture logging at. The default is INFO - capturing   everything.--logging-format LOGGING_FORMATSpecify custom format to print statements. Uses the same format as used  by standard logging handlers. The default is"%(levelname)s:%(name)s:%(message)s".--logging-datefmt LOGGING_DATEFMTSpecify custom date/time format to print statements. Uses the same       format as used by standard logging handlers.--logging-filter LOGGING_FILTERSpecify which statements to filter in/out. By default, everything is     captured. If the output is too verbose, use this option to filter out    needless output. Example: --logging-filter=foo will capture statements   issued ONLY to foo or foo.what.ever.sub but not foobar or other logger.  Specify multiple loggers with comma: filter=foo,bar,baz. If any logger   name is prefixed with a minus, eg filter=-foo, it will be excluded       rather than included.--logging-clear-handlersClear all other logging handlers.--no-summary          Don't display the summary at the end of the run.--summary             Display the summary at the end of the run.-o FILE, --outfile FILEWrite to specified file instead of stdout.-q, --quiet           Alias for --no-snippets --no-source.-s, --no-source       Don't print the file and line of the step definition with the steps.     --show-source         Print the file and line of the step definition with the steps. This is   the default behaviour. This switch is used to override a configuration   file setting.--stage STAGE         Defines the current test stage. The test stage name is used as name      prefix for the environment file and the steps directory (instead of      default path names).--stop                Stop running tests at the first failure.-t TAG_EXPRESSION, --tags TAG_EXPRESSIONOnly execute features or scenarios with tags matching TAG_EXPRESSION.    Pass "--tags-help" for more information.-T, --no-timings      Don't print the time taken for each step.--show-timings        Print the time taken, in seconds, of each step after the step has        completed. This is the default behaviour. This switch is used tooverride a configuration file setting.-v, --verbose         Show the files and features loaded.-w, --wip             Only run scenarios tagged with "wip". Additionally: use the "plain"      formatter, do not capture stdout or logging output and stop at the       first failure.-x, --expand          Expand scenario outline tables in output.--lang LANG           Use keywords for a language other than English.--lang-list           List the languages available for --lang.--lang-help LANG      List the translations accepted for one language.--tags-help           Show help for tag expressions.--version             Show version.

behave.ini 应用

下面通常简单的实例来应用一下 Behave 的配置,项目结构如下:

在这里插入图片描述

feature 文件

创建 shopping_cart.feature,加上一些 tags

# shopping_cart.featureFeature: Shopping Cart and Order Process@cart @smokeScenario: Guest user adds items to the cartGiven the user is on the home pageWhen the user adds an item to the cartThen the user should see the item in the cart@cart @regressionScenario: Registered user removes items from the cartGiven the user is logged inAnd the user has items in the cartWhen the user removes an item from the cartThen the user should see the updated cart@order @smokeScenario: Guest user places an orderGiven the user is on the home pageWhen the user adds an item to the cartAnd the user proceeds to checkoutAnd the user completes the orderThen the user should receive an order confirmation@order @regressionScenario: Registered user tracks an orderGiven the user is logged inAnd the user has placed an orderWhen the user checks the order statusThen the user should see the current order status

step 文件

创建 calculator_steps.py 文件

# calculator_steps.pyfrom behave import given, when, then@given('the calculator is turned on')
def step_calculator_turned_on(context):context.calculator_on = True    @when('I add {num1:d} and {num2:d}')
def step_add_numbers(context, num1, num2):context.result = num1 + num2@then('the result should be {expected_result:d}')
def step_check_result(context, expected_result):assert context.result == expected_result, f"Actual result: {context.result}, Expected result: {expected_result}"

创建 behave.ini

这里将配置文件和 feature, steps 文件夹是同级的, 配置了一些常用的 Behave 命令选项:

  • 配置 feature 的路径:paths=BDD/Features/tag_example
  • disable dry-run 执行步骤:dry_run = false
  • 配置标签为 smoke 且 为 cart 的测试用例:tags=smoke
    cart
  • 配置 format 为自定义的 my_html:format = my_html
  • 配置输出文件为 my_report.html :outfiles = my_report.html
  • 配置自定义输出格式 my_html
 [behave.formatters]
my_html = behave_html_formatter:HTMLFormatter

上面就是配置自定义的 my_html 的输出格式是 behave_html_formatter

behave.formatters 模块是 Behave 框架中用于处理格式化输出的模块,可以自定义。它包含了一些用于定义和管理不同输出格式的类。这些类负责将测试结果以各种方式呈现,比如在终端上显示、生成报告文件等。详情请参考 Behave Formatter

所以整个配置内容如下:

# behave.ini
[behave]
paths=BDD/Features/tag_example
dry_run = false
tags=smokecart
format = my_html
outfiles = my_report.html[behave.formatters]
my_html = behave_html_formatter:HTMLFormatter

执行 Behave

只需执行命令 behave,不用敲那么命令了,只有 BDD/Features/tag_example 文件夹下的 标签为 smoke 且为 cart 的测试用例执行了,并且生成了自定义的 html 测试报告。

PS C:\Automation\Test> behave
Feature: Shopping Cart and Order Process # BDD/Features/tag_example/shopping_cart.feature:3@cart @smokeScenario: Guest user adds items to the cart     # BDD/Features/tag_example/shopping_cart.feature:6Given the user is on the home page            # BDD/steps/shopping_cart_steps.py:27When the user adds an item to the cart        # BDD/steps/shopping_cart_steps.py:40Then the user should see the item in the cart # BDD/steps/shopping_cart_steps.py:61@cart @regressionScenario: Registered user removes items from the cart  # BDD/Features/tag_example/shopping_cart.feature:12Given the user is logged in                          # NoneAnd the user has items in the cart                   # NoneWhen the user removes an item from the cart          # NoneThen the user should see the updated cart            # None@order @smokeScenario: Guest user places an order                 # BDD/Features/tag_example/shopping_cart.feature:19Given the user is on the home page                 # NoneWhen the user adds an item to the cart             # NoneAnd the user proceeds to checkout                  # NoneAnd the user completes the order                   # NoneThen the user should receive an order confirmation # None@order @regressionScenario: Registered user tracks an order           # BDD/Features/tag_example/shopping_cart.feature:27Given the user is logged in                       # NoneAnd the user has placed an order                  # NoneWhen the user checks the order status             # NoneThen the user should see the current order status # None1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 3 skipped
3 steps passed, 0 failed, 13 skipped, 0 undefined
Took 0m0.000s

生成了 html 测试报告:

在这里插入图片描述

查看配置默认值 behave -v

如果您想知道 behave 从哪里获得其配置默认值,您可以使用 “-v” 命令行参数,它会告诉您。

PS C:\Automation\Test> behave -v
Loading config defaults from "./behave.ini"
Using defaults:color Falseshow_snippets Trueshow_skipped Truedry_run Falseshow_source Trueshow_timings Truestdout_capture Truestderr_capture Truelog_capture Truelogging_format %(levelname)s:%(name)s:%(message)slogging_level 20steps_catalog Falsesummary Truejunit Falsestage Noneuserdata {}default_format prettydefault_tags
scenario_outline_annotation_schema {name} -- @{row.id} {examples.name}format ['my_html']outfiles ['my_report.html']paths ['BDD\\Features\\tag_example']tags ['smoke', 'cart']
more_formatters {'my_html': 'behave_html_formatter:HTMLFormatter'}
Supplied path: "BDD\Features\tag_example"
Trying base directory: C:\Automation\Test\BDD\Features\tag_example
Trying base directory: C:\Automation\Test\BDD\Features
Trying base directory: C:\Automation\Test\BDD
Feature: Shopping Cart and Order Process # BDD/Features/tag_example/shopping_cart.feature:3@cart @smokeScenario: Guest user adds items to the cart     # BDD/Features/tag_example/shopping_cart.feature:6Given the user is on the home page            # BDD/steps/shopping_cart_steps.py:27When the user adds an item to the cart        # BDD/steps/shopping_cart_steps.py:40Then the user should see the item in the cart # BDD/steps/shopping_cart_steps.py:61@cart @regressionScenario: Registered user removes items from the cart  # BDD/Features/tag_example/shopping_cart.feature:12Given the user is logged in                          # NoneAnd the user has items in the cart                   # NoneWhen the user removes an item from the cart          # NoneThen the user should see the updated cart            # None@order @smokeScenario: Guest user places an order                 # BDD/Features/tag_example/shopping_cart.feature:19Given the user is on the home page                 # NoneWhen the user adds an item to the cart             # NoneAnd the user proceeds to checkout                  # NoneAnd the user completes the order                   # NoneThen the user should receive an order confirmation # None@order @regressionScenario: Registered user tracks an order           # BDD/Features/tag_example/shopping_cart.feature:27Given the user is logged in                       # NoneAnd the user has placed an order                  # NoneWhen the user checks the order status             # NoneThen the user should see the current order status # None1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 3 skipped
3 steps passed, 0 failed, 13 skipped, 0 undefined
Took 0m0.000s

这篇关于BDD - Python Behave 配置文件 behave.ini的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/549433

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.