从0开始学习自动化测试框架cypress登录
Posted svygh123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从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登录的主要内容,如果未能解决你的问题,请参考以下文章