- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经开始为现有的购物车应用程序编写一些测试用例。之前没有 cypress 或任何其他 js 测试框架的经验。
我写的几个初始测试用例看起来像:
cart_onload_spec.js:
describe('Cart load spec', () => {
it('Has correct page title', () => {})
context('When cart is empty', () => {
it('Empty cart message appears', () => {})
it('Has correct grand total', () => {})
it('Has correct remaining customer points', () => {})
})
context('When cart is not empty', () => {
context('Line items listing', () => {
it('Has correct column info per row', () => {})
it('Each row shows correct row total', () => {})
})
it('Has correct grand total', () => {})
it('Has correct remaining customer points', () => {})
})
})
describe('Cart delete spec', () => {
before(() => {
//empty cart
//add 1 item
})
it('Can delete item', () => {
//cy.request('/api/deleteLine')
//assert refkey is the same as row deleted
})
//now cart is empty so run "When cart is empty" test-cases from "Cart load spec" again.
it('Empty cart message appears', () => {})
it('Has correct grand total', () => {})
it('Has correct remaining customer points', () => {})
})
describe('Cart quantity updated spec', () => {
before(() => {
//empty cart
//add 1 item
})
it('Can update quantity', () => {
//cy.request('/api/updateLineQty')
//assert refkey is the same as row updated
//assert input has updated qty
})
it('Has correct row total per row', () => {})
it('Has correct grand total', () => {})
it('Has correct remaining customer points', () => {})
})
it
block 可以重复用于创建不同的场景或测试套件。就像上面的例子
it
重复的 block 是
it('Has correct row total per row', () => {})
it('Has correct grand total', () => {})
it('Has correct remaining customer points', () => {})
it('Has correct row total per row', hasCorrectRowTotal())
hasCorrectRowTotal()
在一些外部文件中,因为 cypress 命令需要在
it
中每个柏树文档的 block 。
最佳答案
这是一个相当广泛的话题,但我有一些我认为对你有帮助的东西。如果您希望我澄清或添加一些内容,请对此答案发表评论。
识别重复单词并合并
一个例子是“购物车”。如果在每个测试规范的开头重复该词,则创建一个名为 cart 的目录并将所有购物车测试规范放入其中。以这种方式嵌套各种事物可能会有所帮助。如果文件位于名为“cart”的目录中,您可以将其从名称中删除。
不要在巢上方/下方
试图过度组织会让你更加困惑。想到那些俄罗斯套娃(https://en.wikipedia.org/wiki/Matryoshka_doll)。根据需要嵌套东西。将事物抽象为页面对象也是如此。抽象过度或不足会使事情变得更加困惑。
避免级联故障
小心不要以一种如果一个失败了,后面的它就会失败的方式来编写你的测试。如果您不尊重潜在的级联故障,您也不会获得适当的退休。这也是一把双刃剑。如果每个规范只有一个,测试执行时间将会增加。如果您已经对如何分解测试规范做出了正确的决定,但仍需要改进执行时间,请查看并行化:https://docs.cypress.io/guides/guides/parallelization.html#Splitting-up-your-test-suite
共享/通用方法
您可以使用页面对象建模(可以使用但有时称为不必要的抽象/反模式)来使您的代码可重用。基本上你有你拉入的外部文件(作为一个允许并行化的实例)并在你的测试规范中引用这些方法,以便你的测试可以保持干燥(不要重复你自己)。您的开发人员会尊重您为遵循面向对象编程原则所做的努力。 DRY 就是其中之一。
Cucumber 易于重用和可读性
如果您有大量具有不同排列的重复测试逻辑,请考虑使用 Cucumber 语法/testrunner。每个“步骤”或 Given/When/Then 都由代码支持。您可以使用正则表达式来允许参数化。
希望这可以帮助!组织是您将不断修改和重构代码的东西。每个团队都会有不同的需求。以非常协作的方式与所有提供反馈的相关方一起处理此问题。神速!
关于javascript - 如何将测试用例组织成大型应用程序的测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51304618/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!