【发布时间】:2019-08-02 22:03:40
【问题描述】:
我正在测试一个 ASP.NET webapp(我无权访问的代码),其中包含多个连续页面,在 Cypress 脚本中具有以下相关部分:
describe("Calculation", function() {
// ...
context("Pages", function() {
// ...
// Page 1
it("With all inputs", function() {
cy.visit(url)
// ... setting input fields ...
cy.get(next).click()
cy.get('.stg-error-mark').should('have.length', 0)
})
// Page 2
it("No selection", function() {
cy.get(next).click()
cy.get('.stg-error-mark').should('have.length', 2)
})
})
})
第 2 页it(...) 的命令日志包含:
...
- 点击
(FORM SUB) -- 提交表单-- ← 第 2 页在 Cypress 的 App Preview 中看起来不错。
(PAGE LOAD) -页面已加载-- ← 网络应用在应用预览中显示以下错误。
...
错误
输入交易被自动取消,因为它没有持续太久。请重新开始。
如果在Page 2 的it(...) 中没有visit() 编辑Page 1,则webapp 似乎缺少一些内部状态。
我知道将所有相关的页面代码部分放入 (describe-global) functions 并越来越多地调用它们,这样在每个测试中总是从 Page 1 开始。但是,由于这个应用程序有 33 个不同的功能路径和 5 到 6 个连续页面(取决于用户在前一页上的输入),我想避免这种代码膨胀、混乱、容易出错和耗时的函数链接——并且全局变量是魔鬼。
更新
从理论到实践,这是功能路径图:
+------ Seite 1 -------+----- Seite 2 -----+------ Seite 3 ------+------ Seite 4 ------+- Seite 5.1 -+- Seite 5.2 -+
| Wohneinheiten | Fördermodell | 1. Wohneinheit | 2. Wohneinheit | Berechnung | Berechnung |
| 2/4 | 8/2 | 12/10 | 6/5 | Input | Output |
| | | | | | |
| Wohneinheiten: | ▼ Modell | Heizwärmebedarf: | | | |
| +- <no> --->(X) | +-▼ Passiv ------>-- HWB: ----------------------------------->-------------> |
| | | | | +- !]0..10] | | | |
| +- WE1: --->(X) | | | +--->(X) | | | |
| | | | | | | | |
| +- WE2: --->(X) | +-▼ Punkte ------>-- HWB: ----------------------------------->-------------> |
| | | | | +- !]10..49] | | | |
| +- WE1: | | | +--->(X) | | | |
| | +- AV-V: -------->--+ | | | | |
| | | | | +-▼ PV ---------------------------------->-------------> |
>--+ | | | +-▼ Solar ------------------------------->-------------> |
| | | +-▼ Niedrig ----->--+-x WRL --------------------------------->-------------> |
| | | | | +- <no> --->(X) | | | |
| +- WE2: | | | | | | |
| | +- AV-V: --->(X) | +-▼ Niedrigst --->--▼ Heizsystem ---------------------------->-------------> |
| | | | | +-▼ Elektrisch | | | |
| | | +-▼ <no> --->(X) | +-▼ PV2kWp | | | |
| | | | | +--->(X) | | | |
| | | | +-o WRL | | | |
| | | | +--->(X) | | | |
| +- WE1: | | | | | |
| +- WE2: | ▼ Modell | Heizwärmebedarf: | Heizwärmebedarf: | | |
| +- AV-V: ----->--+-▼ Passiv ------>-- HWB: ------------->-- HWB: ------------->-------------> |
| | | | +- !]0..10] | +- !]0..10] | | |
+----------------------+ | | +--->(X) | +--->(X) | | |
| | | | | | |
| +-▼ Punkte ------>-- HWB: ------------->-- HWB: ------------->-------------> |
| | | +- !]10..49] | +- !]10..49] | | |
| | | +--->(X) | +--->(X) | | |
| | | | | | |
| +-▼ Niedrig ----->--+-▼ PV ----------->--+-▼ PV ----------->-------------> |
| | | +-▼ Solar ---------> +-▼ Solar --------->-------------> |
| | | +-x WRL -----------> +-x WRL ----------->-------------> |
| | | +- <no> --->(X) | +- <no> --->(X) | | |
| | | | | | |
| +-▼ Niedrigst --->--▼ Heizsystem ------>--▼ Heizsystem ------>-------------> |
| | | +-▼ Elektrisch | +-▼ Elektrisch | | |
| +-▼ <no> --->(X) | +-▼ PV2kWp | +-▼ PV2kWp | | |
| | | +--->(X) | | +--->(X) | | |
| | +-x WRL | +-x WRL | | |
| | +--->(X) | +--->(X) | | |
+-------------------+---------------------+---------------------+-------------+-------------+
Legend:
: ...... Textbox
.. ..... Interval
▼ ...... Dropdown-Listbox or selection
x,o .... Checkbox (checked, unchecked)
<no> ... No input or selection
! ...... Not
(X) .... Error
> ...... Proceed to page or error
现在一切都清楚了,不是吗? (:好的,在编辑器中它看起来不那么压倒性的绿色和更高更宽的视图。)
在Seite 1上输入WE2的情况下,下部的Seite 3和Seite 4相同且重复。
【问题讨论】:
-
反对者介意解释一下吗?我很高兴听到如何改进我的问题。
标签: javascript asp.net web-applications functional-testing cypress