从0开始学习自动化测试框架cypress(四)登录
本文介绍一下模拟系统登录功能
1. 从json读取数据校验登陆
读取json的话,cypress提供了函数
cy.fixture(filePath, encoding, options)
其中filePath是json文件名称,必填,后2项选填,路径默认在fixtures文件夹内
我们在fixtures新建一个user.json文件,内容如下
[{"username":"admin","password":"admin123"},{"username":"test","password":"test123"}
]
注意: 这里必须要用双引号,单引号是会报错的,可以自改试验
接着在integration文件夹内建立我们测试用例login.js, 内容如下
var username='admin'
var password='admin123'describe('登录相关测试用例', () => {it('登录: 与json文件用户数据校验', () => { cy.fixture('user').then(response => {for (var i=0; i<response.length; i++){var user = response[i]if (username == user.username && password == user.password){cy.log('login success')break;} else {cy.log('login fail')}}})})
})
运行结果如下
这样就模拟从json文件读取用户做登录校验成功了,接着看第二种方法
2. 请求后台校验登陆
首先后台要写个servlet的接口供登陆访问,代码如下
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.google.gson.Gson;/*** 登陆接口*/
@WebServlet("/login")
public class LoginServlet extends HttpServlet {/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");Map<String, Object> result = new HashMap<String, Object>();int code = 200;String msg = "登录成功";if ("admin".equals(username) && "admin123".equals(password)) {} else {code = 400;msg = "登录失败: 用户名或密码错误";}result.put("code", code);result.put("msg", msg);System.out.println("OK");PrintWriter writer = response.getWriter();writer.write(new Gson().toJson(result));}
}
注意: 用到了gson的jar包, 也可以写node做服务器,为了节约代码,就写了service方法
然后我们写前端cypress的登录代码,如下
var username='admin'
var password='admin123'describe('登录相关测试用例', () => {it('登录: 发送http请求后台校验', () => {var param = {"username": username,"password": password}cy.request({'url': 'http://localhost:8080/nocode/login','method': 'post','form': true,'body': param}).then(response => {expect(response).property('status').to.equal(200)var resultData = JSON.parse(response.body)expect(resultData.code).to.equal(200)})})
})
由于后台返回的是gson转换后的json字符串,因此需要转换为json对象
运行结果如下
这样访问后台校验登陆就完成了,密码错误的话是会报错的,可以自改试验
3. 访问页面输入用户名和密码提交后台校验登陆
这里我们需要新建一个登陆的html页面: login.html , 内容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body><form action="/login" method="post"><input type="text" name="username"><input type="text" name="password" id="password"><input type="submit"></form>
</body>
接着我们模拟访问登录页,然后输入用户名和密码进行提交,方法是这样的
var username='admin'
var password='admin123'describe('登录相关测试用例', () => {it('登陆: 模拟网页输入请求后台校验', () => {cy.visit('http://localhost:8080/nocode/login.html')cy.get('input[name=username]').type(username)cy.get('input[name=password]').type(password)cy.get('form').submit()})
})
运行之后结果是这样
每一步执行过程都显示的非常清楚, 这样模拟网页输入登陆也完成了, 如果想登录成功跳转页面, 在后台转发到成功页面就可以了.
(本篇就到这)
获取最新资讯,欢迎关注公众号: 软件开发与技术设计(SoftwareDesigner)
从0开始学习自动化测试框架cypress(四)登录相关推荐
- 从0开始学习自动化测试框架cypress(二)DOM
Cypress Can Be Simple: 这节来学习它简约而不简单的写法吧, 看了之后有种还可以这样的感觉 学习内容: 如何查询DOM 命令主题和命令链 断言写法 来看一个栗子 describe( ...
- 从0开始学习自动化测试框架cypress(一)
安装cypress 前提是已经安装nodejs mkdir cypress cd cypress npm install cypress --save-dev --registry=https://r ...
- 从0开始学习自动化测试框架cypress(五)总结
一.下载环境: cypress.zip解压运行examples或npm install cypress 二.简单使用 1.常用文件夹 fixtures: 保存json文件 integration: 保 ...
- 从0开始学习自动化测试框架cypress(五)案例
本文将实现以下案例功能 使用到以下6个文件 login.jsp : 登录页面 index.jsp : 首页(成功登录后跳转到的页面) add_user.jsp : 新增用户页面 LoginServle ...
- 从0开始学习自动化测试框架cypress(三)特性
下面再来一个简单的例子 实现效果是访问百度,输入java经典教程,搜索 describe('DOM访问操作实例', () => {it('百度搜索java经典教程', () => {cy. ...
- 自动化测试框架[Cypress元素操作详解]
前提 已经熟练掌握了Cypress的基本知识,请参考自动化测试框架[Cypress概述]和自动化测试框架[各自动化测试框架比较] 已经熟练掌握Cypress环境配置,请参考自动化测试框架[Cypres ...
- 手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告
手把手教你搭建java接口自动化测试框架(四):断言.生成测试报告 上一集说到post和Get请求,请求后得到的响应(即接口返回值)是我们想要的吗 比如网站上get接口文档说明 : "dat ...
- python+requests+unittest+HTMLTestRunner构建接口自动化测试框架(四)测试用例执行
python+requests+unittest+HTMLTestRunner构建接口自动化测试框架(一)了解基础框架,读取配置文件 python+requests+unittest+HTMLTest ...
- 前端自动化测试框架cypress
前端自动化测试框架cypress 自动化测试 为了保障软件质量,并减少重复性的测试工作,自动化测试已经被广泛运用. 自动化测试是一种测试方法,是指使用特定的软件,去控制测试流程,并比较实际结果与预期结 ...
最新文章
- 作业11:最优前缀码
- 转载模板声明中template typename T和template class T
- 每日一皮:在同一个项目上工作2年的样子...
- Apache Traffic Server处理请求的过程
- 2.两个VLAN通过一个交换机与路由器的连接
- Django框架的整合
- visual studio 的各个版本下载地址
- 20个让Web Developer开发生涯更加轻松的工具
- 玩出花,只用文本就能干CV的活!
- Java 学习笔记(121208)
- CSS工具之CSS重置(CSS Reset)
- java家谱树_青锋家谱系统-基于springboot+orgtree的青锋家谱树管理系统
- JS实现数组去重方法
- c#开发之八---mvc
- qt linux 视频教程,详解 QT 显示视频 Linux下 Qt 和 Xv实现
- 西北农林科技大学CSDN高校俱乐部运营策划书
- 利用python,求解数独
- C语言小游戏————贪吃蛇.c
- CSS3线性渐变与径向渐变
- 数据结构与算法之排序(Java版)
热门文章
- REDM库使用教程01(详细入门)
- Spring 框架 IOC 与 DI 的总结
- JDBC中事务、批量操作、大数据类型、获取自动生成的主键、等用法
- Mellanox能给英伟达带来什么?
- FD.io的使用场景(VPP)
- adb命令 android 串口_android逆向笔记之初学者常用adb命令
- c语言输入一组小数数组,如何得出一个浮点数的小数部分,要把各个位保存到一个数组里边。...
- apache php 调优_LAMP服务器性能优化技巧之加速PHP
- java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...
- [Unity脚本运行时更新]C#7.3新特性