gpt4 book ai didi

python - 行为: how to organize files of this framework in not-toy project

转载 作者:行者123 更新时间:2023-12-01 09:07:04 24 4
gpt4 key购买 nike

我正在尝试使用行为框架、python 通过 BDD 测试来覆盖项目。问题是所有 BDD Material 都使用不真实的玩具示例。我的项目相当大,我遇到了以下问题

  1. 在不同的 .feature 文件中,我具有相同的步骤名称,但它们的实现必须不同。示例:步骤名称“输入代码并单击提交按钮”可以在网站上的许多不同页面上使用。如何解决这个冲突?
  2. 如果您有复杂的网页进行测试,那么实现文件会快速增长。在几个 .feature 文件之后,步骤文件就有超过 400 多个代码字符串。根据 .feature 文件划分步骤文件(1 对 1)不是一个解决方案,因为某些步骤必须在 .feature 文件之间共享,并且如何找到特定步骤变得不明显。是否有可能按级别划分步骤实现(功能级别、少数功能级别的目录、项目范围级别...)

最佳答案

所以你有两个问题,我会尝试解决这两个问题:

问题 1:

在许多功能文件中使用相同的逐字 Given/When/Then 是没问题的;重要的是如何在步骤定义中实现它们。我会考虑走两条路:(1)利用behavior的step parameters ; (2) 使用步骤的 context 对象来指定您正在运行的功能文件或场景。关于 (2),考虑设置如下场景:

Feature: Buying toys    

@checkout_page
Scenario: Proceed to checkout page
Given Toys are in the shopping cart
When I enter code and click submit button <--- Same step
Then the items will be checked out

@purchase_page
Scenario: Proceed to purchase page
Given Toys are in the shopping cart
When I enter code and click submit button <--- Same step
Then the items will be purchased

从这里,您可以使用行为的 context 对象来存储标记并在步骤实现中使用它:

在环境.py中:

def before_scenario(context, scenario):
context.current_scenario_tags = scenario.tags # This is a list
# ... other stuff maybe

分步实现:

@When("I enter code and click submit button")
def step_impl(context):
# Assuming that the logic to enter the code and set up the clicking action
# is identical in most regards, you should pull it out of the following for loop
# and place it here. This may help shorten your step implementations.
# vvvvvvvvvvvvvvvvvvvvv
# HERE
# ^^^^^^^^^^^^^^^^^^^^^
for tag in context.current_scenario_tags:
if tag == "checkout_page":
# Then handle the checkout_page scenario
break
elif tag == "purchase_page":
# Then handle the purchase_page scenario
break

*根据您已经使用的标签,您可能只想执行 break 语句,而不是循环遍历其余标签,假设您已经知道要使用的特定标签正在寻找。

这并不能解决您的步骤实现长达 400 行的问题,但俗话说,“鱼与熊掌不可兼得”。

问题 2:

上面已经解决了这个问题,但以下是文档中有关行为及其如何搜索功能文件和步骤文件的一些内容:

behave works with three types of files:

  1. feature files written by your Business Analyst / Sponsor / whoever with your behaviour scenarios in it, and
  2. a “steps” directory with Python step implementations for the scenarios.
  3. optionally some environmental controls (code to run before and after steps, scenarios, features or the whole shooting match).

因此需要一个 feature/ 目录,以及一个 feature/steps/ 子目录。答案是否定的,behavior 不允许您在 feature/steps/ 目录中创建分类文件夹或子目录。请记住,在查找与功能文件中的步骤关联的步骤实现时,behaviour 会搜索 feature/steps/ 目录中的所有 Python 文件,但不会递归到该目录的子目录中。拥有良好的命名约定肯定会大有帮助!

关于python - 行为: how to organize files of this framework in not-toy project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com