python - 是否可以指定在行为中使用哪个步骤实现?
问题描述
我的测试套件具有适用于桌面和移动设备的功能/场景。某些步骤最终将具有相同的名称(即,当我转到主页时,当我单击订单时......等)
虽然移动和桌面之间的实现会有所不同,但我现在唯一能想到的解决方案是稍微更改场景名称when I go to home page on phone
,但我仍在寻找一种方法来指定要使用的实现。
如果您可以推荐一些东西(例如构建两个测试套件,一个用于移动设备,一个用于桌面),我也会进行更好的设置,但似乎这会创造更多的工作而不是节省。
解决方案
在我目前基于 Behave 的 UI 测试框架中,我们依赖
一次编写,到处测试
原则。意思是,Gherkin 是声明性的,通过注释/标签指定适用于桌面 Web 或移动设备的场景。两个平台的名称、步骤和流程相同。实际处理是通过DSL 层和策略模式完成的,以在运行时获取适当的驱动程序和流。所以,从设计的角度来看,它看起来像这样:
===========================
| Gherkin (feature files) |
===========================
|
=====================================
| Step definitions (step_functions) |
=====================================
|
===============================
| DSL |
| (domain_models, strategies) |
| e.g. login, register |
===============================
|
==============================================
| Selenium Wrappers |
| (facade, decorators, adapters, proxy) |
|e.g. atoms/element_actions.py or elementium |
==============================================
|
=========================================
| Automation code |
| (python bindings, protractor porting) |
=========================================
/ \
_________________________________________________________________
SELENIUM ARCHITECTURE HERE
/ \
============== =================
| appium_api | | webdriver_api |
============== =================
| |
======= =========== ============== ===============
| iOS | | Android | |ChromeDriver| |FirefoxDriver|
======= =========== ============== ===============
您需要做的就是将自定义标志传递给您的特定/CI 运行,就像这样-D platform=desktop -D browser=chrome
。这可以通过 TagsManager 获取并通过调度映射执行到适当的策略。
所以,你不需要
构建两个测试套件,一个用于移动设备,一个用于桌面
推荐阅读
- java - 使用 Spring Boot 在侦听器中调用带有 @RequestScope 注释的类
- python - 给定数量的访问地点的旅行推销员问题
- c++ - 使用 MySql C++ 连接器调用 MySql 存储过程
- c# - 如何防止 System.NullReferenceException
- flutter - MaxLength 属性 - 更改默认颜色
- javascript - 替换 document.getElementById("demoID").style.color = "blue"; 是否安全 使用 demoID.style.color = "blue";
- python - 为 ML 保存和加载一种热编码
- laravel - 使用一个 post 请求在两个不同的类中插入操作
- reactjs - 太多的重新渲染。React 限制渲染次数以防止无限循环素材
- asp.net-mvc - 我对 c# mvc 完全陌生,几乎绝望了