云南工程建设总承包公司网站,百度权重查询工具,网站开发时间进度表,中国建设银行官网站企业Behave是一个用于行为驱动开发 (Behavior-Driven Development, BDD) 的 Python 库。使用 Behave#xff0c;可以编写自然语言格式的使用场景来描述软件的行为#xff0c;然后用 Python 实现这些场景下的步骤#xff0c;形成可直接运行的测试。
Behave的目标是帮助用户、开发…Behave是一个用于行为驱动开发 (Behavior-Driven Development, BDD) 的 Python 库。使用 Behave可以编写自然语言格式的使用场景来描述软件的行为然后用 Python 实现这些场景下的步骤形成可直接运行的测试。
Behave的目标是帮助用户、开发人员和QA人员通过让他们写出更易于理解的测试用例来更好地理解和构建软件产品。Behave使用Gherkin语言来编写测试用例该语言是一种自然语言易于理解并且可以很好地与非技术人员共享和交流测试结果。
Behave提供了一种将业务逻辑和测试逻辑分离的方法因此它可以使测试代码更加可读可维护和可重用。Behave支持多种输出格式包括HTMLJSON和JUnit XML并且可以与Selenium等其他Python测试框架结合使用。
Behave在Python BDD中的地位
BDD的框架中最流行的当属 Cucumber 了作为描述BDD的领域特定语言DSLGherkin 一开始就是开发给Cucumber使用的Cucumber官方提供了很多语言的支持包括Java,Node.js , Ruby 等。 Cucumber没有直接提供Python语言的库官方推荐使用半官方的库 Behave 所谓半官方就是不是 Cucumber官方开发和维护 但是使用了Cucumber的组件。
基于Python的BDD框架很多 到目前使用比较多的应该是pytest-bdd和Behave, pytest-bdd的优势是基于 pytest可以整合单元测试和功能测试。关于pytest-bdd的介绍可以参考 pytest-bdd快速示例和问题解决
环境准备安装 behave 和 selenium
本篇的示例需要安装两个模块 behave 和 selenium其中selenium是用于Web端自动化测试的因为本篇使用behave和selenium进行一个百度页面搜索的测试。
关于Selenium
Selenium是一个自动化测试工具可以用于测试Web应用程序支持多种语言Java、C#、Python等。Selenium可以模拟用户在网页上的行为如点击、填写表单等操作自动化地进行测试从而提高测试效率和准确性。Selenium的核心是WebDriver它可以驱动各种浏览器进行测试并提供了丰富的API接口方便管理和执行测试用例。Selenium还支持分布式测试、并行测试和测试结果的自动化分析等功能可用于单元测试、集成测试和系统测试等场景。由于Selenium的开源和广泛应用有很多社区和第三方库支持可方便地应用于不同的项目和环境。
安装扩展
可以使用 pip show behave 和 pip show selenium 查看是否安装了这两个模块如果没有安装使用如下命令进行安装
pip install behave
pip install selenium测试示例和目录结构
目录结构其实没有特别的要求这里遵循易于管理的原则定义目录结构如下
├────features/ # 用户场景│ ├────baidu.feature # 用户规格
│ ├────steps│ │ ├────test_baidu.py # 步骤函数
步骤
这里的步骤很简单包括三步
编写场景文件。在“features”的目录下创建后缀名为.feature文件描述测试情景。编写场景步骤。测试。
测试场景与代码文件
这里测试在百度上进行搜索的功能 各文件的内容如下
场景文件 baidu.feature
Feature: 百度搜索Scenario: 搜索关键词Given 关键词 behaveWhen 打开百度页面And 输入关键词And 点击百度一下按钮Then 页面标题中应包含关键词
场景步骤 test_baidu.py
from behave import given, when, then
from selenium import webdriver
from time import sleepgiven(关键词 {keyword}) # 对应步骤 Given 关键词 behave 参数放在{}中
def step_impl(context, keyword): # context是上下文对象有参数的话加上对应参数context.keyword keyword # 将参数绑定上下文对象以便其他步骤使用when(打开百度页面)
def step_impl(context):context.driver driver webdriver.Chrome() # 同样绑定上下文对象driver.implicitly_wait(10)driver.get(https://www.baidu.com)when(输入关键词)
def step_impl(context):context.driver.find_element(id, kw).send_keys(context.keyword)when(点击百度一下按钮)
def step_impl(context):context.driver.find_element(id, su).click()sleep(0.5)then(页面标题中应包含关键词)
def step_impl(context):assert context.keyword in context.driver.title整个测试用例包含四个步骤: 给定关键词用 given 装饰器定义了一个关键词的步骤传入一个参数 keyword将其保存到 context 对象中以便后续步骤可以使用。 打开百度页面用 when 装饰器定义了一个打开页面的步骤创建了一个 Chrome 浏览器并打开百度首页。 输入关键词用 when 装饰器定义了一个输入关键词的步骤找到页面上的搜索框并输入之前给定的关键词。 点击百度一下按钮用 when 装饰器定义了一个点击按钮的步骤找到页面上的搜索按钮并点击。 页面标题中应包含关键词用 then 装饰器定义了一个标题验证的步骤验证页面标题是否包含之前给定的关键词。
在 Behave 中“given-when-then”是常用的测试步骤流程模式用来描述测试场景和测试步骤其中 given 表示给定前置条件when 表示触发动作then 表示验证结果。整个测试用例包含了完整的测试步骤和断言可通过运行 Behave 测试框架来执行测试用例并输出结果
命名行切换到 features目录 运行 behave 命令。
测试的时候会新开一个Chrome窗口 打开baidu的网址在搜索框自动输入 behave, 严重完成关闭窗口 在控制台会打印测试的步骤以及测试的结果。
在执行 Behave 测试用例后Behave 会自动输出测试结果结果包括了测试用例总数、通过数和失败数等信息。一个典型的 Behave 测试结果如下所示 复制插入1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 0 skipped
4 steps passed, 0 failed, 0 skipped, 0 undefined
Took 0m3.204s
复制插入其中feature 表示测试用例模块数量scenario 表示测试用例数量steps 表示测试步骤数量未定义的步骤表示测试用例中定义了但未实现或未完成的步骤。如果测试用例执行失败会在结果中输出失败信息包括具体的失败原因和错误堆栈等。在 Behave 中测试结果可通过各种格式的报告来生成如HTML、JSON、XML等。比如结合allure 生成更易阅读的测试报告报告的格式可以是JSON 格式也可以是在线的Web网页。
参考
https://github.com/behave/behaveAllure官方文档 https://docs.qameta.io/allure/#_behavehttps://cucumber.io/docs/installation/?sbsearchpython