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

手机客户端网站建设域名和网址

手机客户端网站建设,域名和网址,石家庄最近新闻事件,济南品牌营销型网站建设文章目录 01 BDD02 pytest-BDD03 安装pytest-BDD04 pytest-bdd的框架结构05 pytest-bdd基础使用5.1 第一步:添加需求描述/用户场景5.1.1 BDD的表达语法5.1.2 创建`.feature`文件5.2 第二步:实现用户场景5.2.1 用户场景的解析/实现5.2.2 使用`scenarios`或`@scenario`关联用户… 文章目录 01 BDD02 pytest-BDD03 安装pytest-BDD04 pytest-bdd的框架结构05 pytest-bdd基础使用5.1 第一步:添加需求描述/用户场景5.1.1 BDD的表达语法5.1.2 创建`.feature`文件 5.2 第二步:实现用户场景5.2.1 用户场景的解析/实现5.2.2 使用`scenarios`或`@scenario`关联用户场景和步骤函数1. `scenarios`2. `@scenario` 5.3 第三步:运行测试 06 pytest-bdd扩展使用6.1 步骤参数6.1.1 默认是String6.1.2 parse (基于pypi_parse)6.1.3 cfparse (pypi_parse的扩展,基于 pypi_parse_type)6.1.4 re 6.2 给定测试步骤覆盖fixture6.3 多行步骤6.4 解析测试步骤中的表格6.5 场景大纲6.6 pytest-bdd标记6.6.1 pytest-bdd标记的基础使用6.6.2 pytest_bdd_apply_tag钩子函数 6.7 背景Backgrounds6.8 重用fixtures (Reusing fixtures)6.9 重用测试步骤 (Reusing steps)6.10 配置Feature的基础路径6.10.1 没有配置Feature的基础路径6.10.2 配置Feature的基础路径 07 pytest-bdd钩子函数7.1 pytest_bdd_before_scenario7.2 pytest_bdd_after_scenario7.3 pytest_bdd_before_step7.4 pytest_bdd_before_step_call7.5 pytest_bdd_after_step7.6 pytest_bdd_step_error7.7 pytest_bdd_step_func_lookup_error 01 BDD BDD 即 Behavior-driven development,行为驱动开发。 在软件工程中, BDD是一种敏捷开发流程。减少传统测试过程中由于技术背景能力,非技术与商业参与者之间业务理解不同而导致的问题。BDD它关注的核心是设计,其要求在设计测试用例的时候对系统进行定义,倡导使用通用的语言将系统的行为描述出来,将系统设计和测试用例结合起来,从而以此为驱动进行开发工作。 BDD行为驱动是一种敏捷开发模式, 重点在于消除开发/测试对需求了解的歧义及用户场景的验证。 BDD 使用自然语言Gherkin来描述系统功能和场景,根据这些描述步骤进行系统自动化的测试。 02 pytest-BDD 官方文档地址: https://pytest-bdd.readthedocs.io/en/latest/ Git仓库地址:https://gitlink.org.cn/test_framework/pytest-bdd pytest-bdd 是一个BDD测试框架,类似于behave, cucumber。与许多其他传统框架pytest, unittest不同,BDD框架-pytest-bdd 不需要单独的运行程序,它可以统一单元测试和功能测试,减轻连续集成服务器配置的负担,并允许重用测试。 pytest-bdd作为pytest的一个插件,所有pytest的功能和插件都可以用于pytest-bdd! 为单元测试编写的pytest固定装置可以通过依赖项注入重新用于功能步骤中提到的设置和操作。允许对需求进行真正的BDD说明,而无需维护任何包含Gherkin命令性声明的上下文对象。 03 安装pytest-BDD 使用如下命令可以安装:pip install pytest-bdd 04 pytest-bdd的框架结构 我们先大概介绍以下框架结构,大家可以先有一个概念。了解了框架结构后,我们再详细介绍pytest-bdd的使用。 正常情况下,我们需要有一个目录features来管理测试用例(.feature文件),一个目录step_defs来管理测试步骤(test_*.py文件)。 其中目录features可以自定义名称,以及自定义位置。只需要在测试步骤(test_*.py文件)中引用正确即可。目录step_defs也可以自定义名称以及自定义位置。以下是示例: # 第一种 ├────features/ # 用户场景 │ ├────projects/ │ │ ├────create_project.features │ ├────login.features ├────step_defs/ # 步骤函数和测试场景 │ ├────projects/ │ │ ├────test_create_project.py │ └────test_login.py# 第二种 ├────cases/ # 用户场景 │ ├────projects/ │ │ ├────create_project.features │ ├────login.features ├────test_cases/ # 步骤函数和测试场景 │ ├────projects/ │ │ ├────test_create_project.py │ └────test_login.py# 第三种 ├────test_cases/ # 测试用例 │ ├────features/ # 用户场景 │ │ ├────login.features │ ├────step_defs/ # 步骤函数和测试场景 │ │ ├────test_login.py# 第四种 ├────features/ # 用户场景 │ ├────projects/ │ │ ├────create_project.features │ ├────login.features ├────step_defs/ # 步骤函数 │ ├────projects/ │ │ ├────create_project_steps.py │ └────login_steps.py ├────test_case/ # 测试场景 │ ├────test_projects/ │ │ ├────test_create_project.py │ └────test_login.py05 pytest-bdd基础使用 5.1 第一步:添加需求描述/用户场景 5.1.1 BDD的表达语法 BDD提供一套标准的需求及用户场景表达语法, 使用文件后缀为.feature的文件进行管理。 BDD分如下几部分: Fixture(特性):是向最终用户或其他涉众提供的一项功能,以支持他们实现业务目标所需的功能。Background(背景):是所有场景公共的部分。在所有场景运行前会运行的部分。Scenario(场景):用户在访问应用时,用户和应用之间有多种条件需要满足,每一种不同的情况都对应不同的场景,简短的声明性句子来总结这个例子的特别之处Given(前置条件):在测试操作前有哪些先决条件?应该定义出所有的但不场景该场景要求范围的先决条件,given主要为后面的测试主体服务When (用户操作):用户做了哪个操作,输入了哪些数据Then (预期结果):回应行操作的预期结果,用户做了操作后会触发系统产生什么样的变化、输出的数据是什么注意: 一个需求文件中只能有一个Feature字段,可以包含多个Scenario(用户场景)。Given-When-Then类似与准备-执行-验证/清理的流程。Given:一般可以用来做预置条件/数据准备,下面第一个And也属于Given。When下面的量And都属于When, 一般是操作步骤。Then: 一般用于验证结果(断言),也可以进行清理数据。5.1.2 创建.feature文件 如下所示是一个示例(文件名:login.feature): Feature: 登录模块需求描述: 用户进入登录页面/弹窗登录页面,使用正确用户名以及密码可以登录成功Background: 清除浏览器缓存,避免缓存影响用例Given 清除浏览器缓存Scenario: 弹窗登录: 正确用户名和密码登录成功Given 打开浏览器,访问项目首页When 点击:登录按钮,打开登录弹窗And 弹窗中,输入用户:xxxxxx, 密码:12345678And 弹窗中,点击: 登录按钮, 提交登录表单Then 当前页面的url地址应该是:https://www.gitlink.org.cn/exploreAnd 右上角显示的用户昵称应该是:xxxxxxScenario: 网页登录: 正确用户名和密码登录成功Given 打开浏览器,访问GitLink首页When 点击:登录按钮,进入登录页面And 登录页面中,输入用户:xxxxxx, 密码:12345678And 登录页面中,点击: 登录按钮, 提交登录表单Then 当前页面的url地址应该是:https://www.gitlink.org.cn/xxxxxxAnd 右上角显示的用户昵称应该是:xxxxxx 5.2 第二步:实现用户场景 在前面的章节我们已经实现了测试场景,但是单单是靠测试场景是无法运行测试的。 我们还需要将每个场景文件.feature中的描述翻译成具体的页面操作, 每一句对应一个步骤函数。 5.2.1 用户场景的解析/实现 我们需要从pytest_bdd中导入given, when, then, parsers,帮助我们实现用户场景中的每一个步骤。 注意:我这里只摘取了上述部分步骤进行实现展示。方法都是类似的。 比如我们实现given中步骤,只需要写一个步骤函数,使用@given("步骤名称")装饰器即可。 @given("打开浏览器,访问项目首页") def visit_projects_home(driver, host):driver.get(host) 同时,一个步骤函数是可以添加多个步骤的,例如: @when("点击:登录按钮,进入登录页面") @when("点击:登录按钮,打开登录弹窗") def click_login_button(driver):login_button = driver.find_element(By.XPATH, "//a[text()='登录']")login_button.click() 如果我们需要从测试步骤弹窗中,输入用户:xxxxxx, 密码:12345678 中提取用户名和密码的具体值,我们可以使用parsers来解析语句中的参数。例如: @when(parsers.parse("弹窗中,输入用户:{username}, 密码:{password}")) def input_login_info_on_pop(driver, username, password):# 这里通过parsers.parse解析到username=xxxxxx, password=12345678username_input = driver.find_element(By.XPATH, "//input[@name='username']")password_input = driver.find_element(By.XPATH, "//input[@name='password']")username_input.send_keys(username)password_input.send_keys(password)而且在步骤函数中,我们可以直接使用pytest的fixture。 # conftest.py 中定义了一个fixture @pytest.fixture(scope="session") def host():return GLOBAL_VARS.get("host")# --------------------------------------------------------------# # test_*.py 测试方法中直接传入fixture的名称作为参数使用即可。 # 这里直接传入了fixture的名称: host, 作为测试方法:visit_projects_home的入参使用。 @given("打开浏览器,访问项目首页") def visit_projects_home(driver, host):driver.get(host) 特别注意:步骤函数中的步骤描述,需要于.feature中的保持完全一致,否则可能会报错。 5.2.2 使用scenarios或@scenario关联用户场景和步骤函数 前面我们已经分别使用.feature文件以及.py文件分别实现了用户场景以及步骤函数。 我们需要将这两者关联起来。 假如我们的步骤函数是放在test_开头的.py文件中,我们可以直接在该文件中使用scenarios或@scenario关联用户场景和步骤函数。 假如我们的步骤函数不是放在test_开头的.py文件中,我们可以新建一个test_开头的.py来管理测试场景,但是我们需要导入该测试场景中所需要相关的步骤函数。 我这里是直接在test_开头的.py文件中放置步骤函数以及测试场景。 下面我将分别介绍scenarios和@scenario装饰器,这两种不同的方法来定义和标记 BDD 场景。 1. scenarios scenarios,用于将多个 BDD 场景与步骤函数关联起来。它可以接受一个或多个参数,每个参数代表一个 BDD 场景。通过 scenarios,可以将多个场景组织在一起,并且可以在步骤函数中使用场景名称进行条件判断或其它处理。 我们可以使用scenarios的方式建立,参考如下: # test_login.pyfr
http://www.zqtcl.cn/news/106977/

相关文章:

  • 厦门市网站建设app开发水务 网站建设
  • jfinal网站开发装修公司加盟哪家最好
  • 成都个人网站制作石家庄设计网站公司
  • 阿里巴巴网站本土化建设烟台市两学一做网站
  • 潍坊品牌网站建设公司旅游类作业网站
  • 建设谷歌公司网站费用求职seo推荐
  • 企业网站建设规划ppt企业网站前端模板下载
  • 补习吧 一家专门做家教的网站百度云搜索引擎入口网盘搜索神器
  • 网站建设与制作企业嘉鱼网站建设哪家专业
  • 电脑怎么做网站赚钱柳州柳北建设局网站
  • 农村服务建设有限公司网站设计基础网站推荐
  • 做网站的编程语言组合ppt模板免费的网站推荐
  • 泰安企业建站公司流程上海营销型网站报价
  • 网站承载量怎么做福州公交集团网站建设
  • 新吴区住房和建设交通局网站小程序商城哪家好排行榜
  • 中小学网站建站模板长春火车站咨询电话
  • c2c网站特点公司网站建设亚运村
  • 邢台wap网站建设费用黑帽seo之搜索引擎
  • 如何用阿里云做网站刷题网站怎么做
  • 织梦制作手机网站上海猎头公司名单
  • 免费生成图片的网站wordpress 购物
  • 江西建设部网站国际新闻最新消息今天2023
  • 怎么做网站啊wordpress英文显示改中文
  • 建筑专业网站有哪些网站标题seo外包优化
  • 浙江建设厅网站施工员报名中国建设协会官网站
  • 网站建设优化是干嘛上海今天最新的新闻
  • 网站大全浏览器软文的概念
  • 盐山做网站价格莱芜征婚吧
  • 具有品牌的微网站建设网站设计培训班前台
  • 网站推广工具推荐html网站地图在线生成