接下来,我将用不超过50行的 Python 代码创建一个简单的区块链,并给它取了一个名字叫SnakeCoin。以此帮助大家理解区块链。 一起动手创建一个极简的区块链 首先,我们先对区块链进行定义。...同时,为了保证整个区块链的完整性,每一个区块都有一个唯一的哈希值,用于自我标识。比如比特币,每一个区块的哈希值是由区块的索引、时间戳、数据以及前一个区块的哈希,经过加密后得到的。...区块链的基本框架就这样搭建出来了。考虑到我们要做的是「区块链」,因此,我们还需要往链上加区块。我之前提到过,其中每一个区块需要包含链上前一个区块的哈希值。...今天的的例子中我们通过Python列表来创建区块链,其中最重要的部分是创世区块(当然,还需要其他区块)。...运行完snakecoin的代码后,在终端里运行以下命令(假设你用的是cURL)。 1. 创建一个交易。
近两年有一款 UI 测试工具非常火爆,名字叫 cypress, 官方号称超越 selenium, 是面向下一代的测试工具。 那 cypress 到底要不要学呢?学起来容易吗?我们一起来看一下。...在需要创建工程的目录下安装,比如我需要在 CypressNotes 下安装。...编写第一个测试用例 打开 vscode, 在 interation 目录下创建一个 hello.js 文件。 在 cypress 的交互界面点击这个文件就可以运行。...在 hello.js 中编写测试代码: describe('这是我的第一条用例', () => { it('1等于1', () => { assert(1==1, "1 not...Mocha 除了可以用 describe 这些 bdd 的形式,还可以用 suite 和 test 这样的 tdd 形式,但是在 Cypress 中不直接支持。
在本文中,我将展示如何测量应用的源代码以收集其代码覆盖率信息。其后我们将利用该代码覆盖率报告来引导端到端测试的编写。 应用 示例应用可在 ?...你可以计算任何想要的东西了。 测量源代码 我们可以通过向 Babel 配置文件导出对象中添加 plugins 列表来测量应用代码。该插件列表应包含 ?babel-plugin-istanbul 。...端到端测试 现在我们测量了源代码,使用其引导编写测试吧。我将用官方的 Vue CLI 插件 ?@vue/cli-plugin-e2e-cypress 安装 Cypress Test Runner。...而后我将安装 ?Cypress 代码覆盖率插件 以在测试运行结束时将覆盖率对象转换为人和机器皆可读的报告。...@vue/cli-plugin-e2e-cypress 已经创建了 tests/e2e 文件夹,在其 support 和 plugins 子目录的文件中都可以加载代码覆盖率插件。
本着测试工程师的优良传统 “You Can You Up, No Can No BB”, 我们直接用代码说话: 假设我有一个网站,它如下面这个样子: ?...我再次笑了, 除了把我写的描述高亮出来,有什么区别吗??...run -e Tags='@smoke' 这样能起到一个挑选测试用例运行的目的。...03 — 总结 我一贯是讨厌BDD的,在初次定义Cypress框架规范时,也有同学建议我用BDD,我都是一票否决的。...不会写代码的同学用不好BDD, 不是说自然语言描述吗?为什么我描述的框架都不认 :)。 BDD除了给我们增加点工作量和Debug负担后,没有带来任何测试效率提升。
推荐你用VS Code创建项目根目录,然后,在项目根目录下执行如下命令 # 两种方式你随意挑选即可 # npm和yarn的安装我不讲了,你自己看书或者网上找 npm install cypress --...(这个就是Cypress10.x的新界面了,其中E2E Testing,是我们之前用Cyprres做的所有的测试统称, Component Testing是Cypress10.x版本才引进的,组件测试,...因为我们什么测试用例都没建呢,所以我们选择上图的第一个“Scaffold example specs”,这个就是给你的一些现成的测试脚手架,让你快速了解下通过Cypress创建出来的测试用例是什么样子的...编写新测试用例 除了用第一种方式搞清楚Cypress的测试用例长什么样外,你还可以直接创建,在交互式运行器上,点击Specs->New Spec, 你会看到: 这次我们选择第2个“Create...你不知道的Cypress系列(12) -- 测试报告Allure 你不知道的Cypress系列(13) -- 你真的需要多浏览器测试吗?
01 — 引言 ChatGPT已经通过了很多考试,姚远老师是Oracle OCP和MySQL OCP讲师,我很好奇ChatGPT能不能通过Oracle OCP的考试呢?...让我们拿Oracle 19c OCP考试(1z0-082)的真题对ChatGPT进行一个测试。 关于号主,姚远: Oracle ACE(Oracle和MySQL数据库方向)。...ChatGPT回答:作为一个AI语言模型,我没有直接的物理数据库来创建索引。... 现在我知道ChatGPT为什么会做错了,因为ChatGPT没有实验环境。...unusable是不创建段的,只有重建索引才会有段。...第11道题是关于延迟段创建特性,ChatGPT也做对了 03 — 总结和分析 测试进行到这里,ChatGPT一共做了11道题,错了4道题,正确率为63.6%,而Oracle 19C OCP的1Z0-082
Cypress官方声称没怎么见过有测试社区关注Componment Test, 这次Cypress把自己的优势摘出来,把Componment Test生成单独的组件,更加能凸显自己的差异性。...这个用法一样,只不是是把某些用例从测试用例里排除出去。 7. 以后你的测试用例要以*.cy.js结尾。...注意,这个地方仅仅在你用原始的默认配置才有用,如果你定制了Cypress的一些功能(如果你看了我的书,一定跟我一样,更改了Cypress的一些默认配置,那么这个就不起作用了)。...Cypress变成Web端测试新标准那是迟早的事儿,各位有能力更新公司技术栈的赶紧跟起来,过2年你会感谢我的。 ---- Cypress有很多奇淫巧技, 我已经总结超过百篇 别走开,下一篇更精彩!...你不知道的Cypress系列(12) -- 测试报告Allure 你不知道的Cypress系列(13) -- 你真的需要多浏览器测试吗?
一个人到底要走多少弯路,才能成为一名合格的测试开发工程师? Cypress又又又更新啦!我将讲解如何使用Cypress进行组件测试。...组件测试允许单独测试一个组件,这在关注特定组件的功能时很重要, 编写组件测试 当你第一次选择组件测试这个类型时,Cypress会自动为你创建相关配置。...React APP,当然你也可以选择列表中的其他选项。...同时,你检查项目文件夹,你会发现文件已经创建到了cypress/component下了。 运行测试用例 测试用例的运行基本不变,你可以直接: npx cypress run 但是你也知道我不推荐。...Cypress有很多奇淫巧技, 我已经总结超过百篇 别走开,下一篇更精彩!
今天是你不知道的Cypress系列(6) -- 多Tab的小秘密 自从Cypress出现后,市面上Web端自动化测试框架就只剩下了两个: 一个是吊打一切的Cypress, 另一个是其它。...饶是经验丰富的测试老专家,在技术选型初次接触Cypress时,听到这个消息也不免倒吸一口凉气:“什么框架,怎么连多Tab都不支持?那还能推广吗?”...这个逻辑好像挺对的,就是代码写起来好累,而且运行时还经常出错。 测试多Tab需要打开多Tab吗? 不知道你有没有想过,你费那么老大劲写代码,是为了验证如下两个事实: 点击跳转这个功能正确。...跳转的新页面能打开。 真正的实力在于不战而屈人之兵。同样的,真正的测试是“不真的测试”。...而验证href是我期待的网址,一定能说明点击它就可以访问到“https://www.helloqa.com”. 什么,你怕这个网址打不开?好说!
端对端测试(End-to-End Testing) 将整个应用放到真实的环境中运行,包括数据在内也是需要使用真实的。 关于测试框架,我主要使用 Vitest 与 Cypress。...怎么理解这句话呢:比方说我要测试获取博客列表的函数,假设实际的接口失效了,那么就会导致结果与预期不一致,就会导致代码测试不通过。既然不通过,那我就要去查看为什么不通过。...其实目前前端有个尴尬的点,目前绝大部分实际业务项目里,前端的单元测试都没啥鸟用,UI 自动测试又太难搞。 这就导致很多开发者不清楚到底要测试什么,导致对测试特别不重视,包括我一开始也是如此。...关于 UI 测试和 e2e 测试,我非常推荐看看 cypress 的Todo 示例,测试的特别清楚,这里放张官方测试结果供参考。...这两者的区别也就是运行时环境的区别,有些实际场景对真实环境是有需求的,所以针对 UI 测试更多会选择像 cypress 这种直接运行在浏览器的测试框架。 为何我开始重视起测试?
自从我的新书上市以来,这本书受到了大量同学热情的追捧和讨论。...希望让大家在选用Cypress作为前端自动化测试框架方案时, 可以借鉴一下,避免再走我走过的弯路。...为了让大家看到标题就知道我再说什么,我把标题更改为: 你不知道的Cypress系列(2) -- ”该死"的PO模型 01 — PO模型是什么 无论你基于何种自动化测试框架开发你的测试脚本,PO模型绝对是你绕不过的坎儿...,这些状态是你(测试脚本创建者)自己定义的,而不是应用程序内部拥有的, 它增加了debug成本。...Cypress又提出了一个模型,App Actions, 同学,你想去尝尝鲜吗?
本来我的项目部署在 http://localhost:8000,但是这个链接是 https://www.cnblogs.com,接下来看使用 cypress 脚本点击会发生什么情况 // #...用例设计 由于 cypress 会在浏览器拒绝在安全页面上显示不安全的内容,因为Cypress最初将URL更改为与http://localhost:8000匹配,当浏览器跟随href到https://...你可能会觉得这是 cypress 的缺陷,很多人会觉得之前用 selenium 都可以,然而,事实是,Cypress在你的应用程序中暴露了一个安全漏洞,你希望它在Cypress中失败。...另外,请确保cookie的secure标志设置为true。 事实上我们没有任何理由访问测试中无法控制的站点。它容易出错,速度很慢。 相反,你只需要测试href属性是否正确!...你真的想点击进入另一个应用程序吗?好的,那么请阅读关于 “禁用web安全” 的内容。
先卖个关子,准备迎接我带来的小惊喜吧 :) 转眼之间,你不知道的Cypress系列已经到第10篇了。...这是IDE VS Code的Cypress插件,可以用来帮助我们更好的使用Cypress进行编码,不是我主动发现的,是Cypress中国(3)群的一位同学主动分享的,为他点赞。...不知道有哪些别名可以用 。 这些问题的存在影响了测试效率,现发现CypressHelper插件可有效解决这个问题,分享如下。...这篇文章没有一点技术含量,但是却实际解决了很多问题,提高了测试生产率,其实有时候想想,日常测试工作也是如此,并不是每天都要高大上,框架,k8s, 云原生,乱七八糟整,不见得能提高多少测试效率。...又比如,你发现测试流程很多不顺畅的地方,测试文档总找不到,周末自己理一下,下周效率马上提高了。 预告一下:我又回来了,后续回复周期性更新,咱们Cypress这个系列还没更新完毕,敬请期待!
/mochawesome-report/mochawesome*.json"] . v4版本改变 版本4有一个突破性的变化-它不再接受像reportDir或rootDir这样的参数。...相反,它现在接受到源报表文件的文件路径或全局模式列表。 如果你要迁移到版本4,你可能需要相应地更改你的参数。 如果有一堆文件要合并到./mochawesome-report 目录下。.../mochawesome-report/*.json > mochawesome.json Cypress 创建这个库的主要动机是能够将 mochawesome 与 Cypress 一起使用。...从版本3.0.0版本以后,Cypress 分别运行每个用例,这导致生成多个 mochawesome 报告,mochawesome-merge 用于合并这些报告,然后为所有 Cypress 测试生成一个...脚本结合 mochawesome-merge 执行你的用例: const cypress = require('cypress') const marge = require('mochawesome-report-generator
最重要的步骤是在测试之间恢复一个干净的安装。此外,只测试你想测试的工作流程,并且只为测试本身创建模拟数据。这个捷径的另一个好处是,它可以提高测试性能。...该测试是用JavaScript编写的,使用的是Cypress框架)。...这是作为beforeEach 生命周期钩子的第一步,以确保每次都能执行重置。之后,专门为测试创建测试数据--对于这个测试案例,将通过一个自定义命令创建一个客户。...当涉及到不假设数据的顺序时(例如,在UI测试中处理列表中的条目顺序时),我们可以设计一个测试来独立于任何顺序的功能。回到网格中信息的例子,我们不会使用伪选择器或其他对顺序有强烈依赖性的CSS。...调试不稳定的测试 我们现在知道了如何通过设计来防止测试失灵。但是,如果你已经在处理一个不稳定的测试了呢?你怎么能摆脱它呢? 当我在调试的时候,把有缺陷的测试放在一个循环中,对我发现易碎性有很大帮助。
今天是你不知道的Cypress系列(13) -- 你真的需要多浏览器测试吗?...多浏览器测试的场景 多浏览器测试的场景不太常见,这里说一个典型场景: 我的产品是Web端聊天室。...为了达成测试目标(模拟用户聊天),我不得不在同一次测试中,驱动两个浏览器示例代表两个不同的用户进行操作。...加上Cypress是完全运行在浏览器之内的,跟你的应用程序共享同一个生命周期,这就以为着。浏览器里发生的一切,它都可以捕捉并且改变,于是,我们可以用Stub来达成这个操作。具体怎么执行呢?...注意,如果你的本次测试不是用Chrome执行的,那么这条用例就不会执行。
这也是我写文章然后建群跟同行一起交流的目的,希望能在群里面了解到大家都在学些什么,工作中会遇到什么样的问题,多多积累自己的经验。...(有需要进群一起交流的,可以加我xiaobotester备注进群) Cypress作为新兴起的一个自动化测试框架,目前我对它也不是很了解,这里就不去复制别人的介绍,只知道它的功能很强大,先来尝试着了解一下工具是怎么用的...nodejs环境参考之前的文章进行操作:Node.js环境搭建以及常见npm用法 创建一个项目的文件夹,我这里创建的目录是:D:\MyScripts\Cypress-demo。...创建一个项目成功启动后,在项目根目录下用命令启动cypress时,会在根目录生成一个cypress的文件夹,里面有一些写好的现成的测试case: ?...想要运行哪个case,直接在弹出的cypress窗口中点击对应的case就可以运行,运行用例效果如下: Cypress官方文档:https://docs.cypress.io/guides/overview
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 返回测试文件的属性 语法格式 Cypress.spec...包含了五个属性 注意 这个命令感觉有点奇怪,为啥这样说呢,如果我代码实现这样的话会循环执行很多次,我也不知道为啥,有大佬知道吗 cy.wrap(Cypress.spec).should((obj) =>...('name', 'chrome') expect(obj).to.have.property('absolute', "C:/Users/user/Desktop/py/MyCypress/cypress.../integration/22_CypressAPI/8_Cypress.spec.js") expect(obj).to.have.property('relative', "cypress\...\integration\\22_CypressAPI\\8_Cypress.spec.js") expect(obj).to.have.property('specType', "integration
运行 2.1方法一 C:\Cypress\node_modules\.bin>cypress open 2.2方法二 C:\Cypress>yarn run cypress open 2.3 方法三(我经常用的方法...\Cypress>yarn run cypress open 运行默认路径下的所有测试代码 C:\Cypress>yarn run cypress run 默认路径为C:\Cypress\cypress...\cypress\integration\demo 3测试框架 before():相当于unittest中的def setUp(cls)方法或者Junit的@Before方法标签; after():相当于...password = '123456' context('测试电子商务网站',function(){ it('登录成功,调到商品列表页面',function(){ cy.visit...} }) }) // csrf在返回的html中,我测试的Django产品的CSRF token用这种方法 it('策略#1:从HTML解析令牌', function
什么是测试 维基百科的定义: 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 也可以这样理解:测试的作用是为了提高代码质量和可维护性。...我的 vue-upload-imgs 库就是通过这种方式写的单元测试,有兴趣可以了解一下(测试文件放在 test 目录)。 测试覆盖率 什么是测试覆盖率?...用一个公式来表示:代码覆盖率 = 已执行的代码数 / 代码总数。...首次打开会自动创建 Cypress 提供的默认测试脚本。 点击右边的 Run 19 integration specs 就会开始执行测试。..." } 小结 本章所有的测试用例都可以在我的 github 上找到,建议把项目克隆下来,亲自运行一遍。
领取专属 10元无门槛券
手把手带您无忧上云