UI自动化+Java自动化脚本
最近在研究用Java写自动化,然后在Jmeter中进行测试,Java我们首先还是导包,这些太easy不说了,有些包可能没有,自己百度去下载,我们直接上代码,跟之前博客测试的服务器接口测试一样的,我们先做一个简单的登录测试Java脚本的编写
附上代码:util包UrlUtil.java
package com.yuliguo.util;
public class UrlUtil {
//定义服务器基类 static类型 可以调用final不可修改
public static final String JD_SERVER="http://39.107.102.34:8080/jd/";
//定义登录接口
public static final String JD_LOGIN="login";
}
因为我的数据库密码没有进行MD5加密所有不用写,但是有加密的就可以Md5进行编译
util包MD5util.java
package com.yuliguo.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5util {
public static String getPwd(String pwd) {
try {
// 创建加密对象
MessageDigest digest = MessageDigest.getInstance("md5");
// 调用加密对象的方法,加密的动作已经完成
byte[] bs = digest.digest(pwd.getBytes());
// 接下来,我们要对加密后的结果,进行优化,按照mysql的优化思路走
// mysql的优化思路:
// 第一步,将数据全部转换成正数:
String hexString = "";
for (byte b : bs) {
// 第一步,将数据全部转换成正数:
// 解释:为什么采用b&255
/*
* b:它本来是一个byte类型的数据(1个字节) 255:是一个int类型的数据(4个字节)
* byte类型的数据与int类型的数据进行运算,会自动类型提升为int类型 eg: b: 1001 1100(原始数据)
35 * 运算时: b: 0000 0000 0000 0000 0000 0000 1001 1100 255: 0000
36 * 0000 0000 0000 0000 0000 1111 1111 结果:0000 0000 0000 0000
37 * 0000 0000 1001 1100 此时的temp是一个int类型的整数
3 */
int temp = b & 255;
// 第二步,将所有的数据转换成16进制的形式
// 注意:转换的时候注意if正数>=0&&<16,那么如果使用Integer.toHexString(),可能会造成缺少位数
// 因此,需要对temp进行判断
if (temp < 16 && temp >= 0) {
// 手动补上一个“0”
hexString = hexString + "0" + Integer.toHexString(temp);
} else {
hexString = hexString + Integer.toHexString(temp);
}
}
return hexString;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
}
entity包Login.java(这是我们解析gson的类)
package com.yuliguo.entity;
public class Login {
public int userId;
public String username;
public String tpken;
public String message;
public int statue;
}
jdlogin包JDLogin.java
package com.yuliguo.jdlogin;
//首先我们需要继承Jmeter里面的一个类 AbstractJavaSamplerClient
import com.google.gson.Gson;
import com.yuliguo.entity.Login;
import com.yuliguo.util.MD5util;
import com.yuliguo.util.UrlUtil;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class JDLogin extends AbstractJavaSamplerClient{
//定义成员变量
//这个对象主要是返回Jemter里面的察看结果树和聚合报告里面的响应时间
public SampleResult sampleResult;
//返回给Jemter界面参数
@Override
public Arguments getDefaultParameters() {
//返回给界面参数通过Arguments
//实例化Arguments
Arguments arguments=new Arguments();
//设置参数
arguments.addArgument("username","zhangsan");
arguments.addArgument("password","123456");
return arguments;
}
//返回测试用例执行之前的方法
@Override
public void setupTest(JavaSamplerContext context) {
super.setupTest(context);
//在测试用例执行之前实例化对象
sampleResult=new SampleResult();
}
//运行测试用例的时候执行
@Override
public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
//获取Jmeter里面设置的参数
String name=javaSamplerContext.getParameter("username");
String pwd=javaSamplerContext.getParameter("password");
//对密码进行加密
// String after_pwd= MD5util.getPwd(pwd);
//post提交 ,拼接参数需要提交的参数
String json="username="+name+"&password="+pwd;
//开始计算响应时间
sampleResult.sampleStart();
String login= UrlUtil.JD_SERVER+UrlUtil.JD_LOGIN;
try{
//网络请求http
URL url=new URL(login);
//设置连接
HttpURLConnection connection= (HttpURLConnection) url.openConnection();
//设置是不是提交参数
//设置是否向HttpConnection输出
connection.setDoOutput(true);
// 设置是否从httpUrlConnection读入
connection.setDoInput(true);
//设置网络请求方式
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection","Keep-Alive");
connection.setRequestProperty("Charset","UTF-8");
//设置文本类型
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
//获取读取流
PrintWriter pw=new PrintWriter(connection.getOutputStream());
pw.print(json);
pw.flush();
pw.close();
//获取网络请求
if (connection.getResponseCode()==200){
//获取数据进行解析
BufferedReader reader=new BufferedReader(new InputStreamReader(connection.getInputStream()));
//读取返回数据
String result=reader.readLine();
//设置将username和password返回给查看结果树
sampleResult.setResponseData(result,"UTF-8");
//使用gson解析
Gson gson=new Gson();
Login login1=gson.fromJson(result,Login.class);
if (login1.statue==0){
sampleResult.setSuccessful(true);
}else {
sampleResult.setSuccessful(false);
}
}
}catch (Exception e){
}
// //设置将username和password返回给查看结果树
// sampleResult.setResponseData(name+pwd,"utf-8");
// //设置返回数据
// sampleResult.setSuccessful(true);
//结束响应时间
sampleResult.sampleEnd();
return sampleResult;
}
//测试用例执行之后的方法
@Override
public void teardownTest(JavaSamplerContext context) {
super.teardownTest(context);
}
}
这里我们使用的是HttpurlConnection的网络请求方式。
我们将这个项目的包导出来,然后放到我们Jmeter ext包下,我们然后老套路进行就ok了
UI自动化+Java自动化脚本相关推荐
- java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...
本文将带你了解Android应用开发AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试),希望本文对大家学Android有所帮助. 一.为什么需要封 ...
- 《移动App测试实战》——2.2 App UI层面的自动化
本节书摘来自华章出版社<移动App测试实战>一 书中的第2章,第2.2节,作者:邱鹏 陈吉 潘晓明,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.2 Ap ...
- java自动化_作为测试工程师进阶自动化选Java还是Python?
这是很多测试工程师从功能跨入自动化纠结的问题,今天本文带大家一探究竟. Java和Python一直都是两种很火的语言,用Python的一定觉得Python好,用Java的只觉得Java好. Java语 ...
- freemarker 生成java_半自动化Java代码生成器[利用freemarker模板生成]
rapid-generator 半自动化Java代码生成器[利用freemarker模板生成] 增加一些定制和扩展, 修改为基于MAVEN的格式. 整体架构保持不变. 增加的特性为: 支持表名前缀去除 ...
- 千锋重庆Java学习之五大Java自动化部署工具
在Java开发工具中,有一种是自动化部署工具,下面千锋重庆小编就给大家介绍五大Java自动化部署工具: 五大Java自动化部署工具 Jenkins Jenkins 是一种开源持续集成(CI) 工具,能 ...
- 工欲善其事,必先利其器:5大Java自动化部署工具
工欲善其事必先利其器:5大Java自动化部署工具,下面和小编一起来看看吧! 在Java开发工具中,有一种是自动化部署工具,下面小编就给大家介绍五大Java自动化部署工具: Jenkins Jenkin ...
- android冒烟测试自动化,自动化冒烟测试脚本应当遵循的原则
自动化冒烟测试脚本应当遵循的原则 发表于:2009-06-29来源:作者:点击数: 自动化冒烟测试脚本应当遵循的原则: 1.覆盖主要功能: 冒烟测试不是 系统测试 或 集成测试 ,所以不需要面面俱到, ...
- python自动化办公 51cto_利用python实现批量自动化运维脚本案例
本文为通过密码或密钥实现python批量自动化运维脚本案例分享,是老男孩linux培训 python课程教学案例内容,后续会分享多线程并发执行这个脚本的更高级的功能(http://oldboy.blo ...
- python ios自动化_iOS python 自动化构建打包脚本
1.准备工作和注意事项 2.配置填写 项目.python脚本文件及plist目录: plist文件: 3.生成相关目录 4.xcodebuild命令打包 5.上传svn 建议: 1.上传app sto ...
最新文章
- Bluetooth ATT介绍
- Qt在VS2010的安装与配置
- 函数进阶_月隐学python第11课
- centos7安装Cloudera Manager
- php提示是否运行,php运行错误提示
- 1、css引入的方式有哪些?_发泡机的原理都有哪些呢?
- 模电之半导体基础篇3(半导体二极管、二极管应用)
- asp.net 获取IP地理位置的几个主要接口
- SVN上传文件注意事项-------------------养成良好的项目文件上传习惯
- linux安装软件-rpm命令解析
- python连续写入数据之间用什么隔开_elasticsearch之使用Python批量写入数据
- mysql字符校对规则作用_(2)MySQL字符集及校对规则的理解
- 计算机网络知识点总结(一)-----蜂窝移动网络
- python atan_Python atan或atan2,我应该使用什么?
- matlab 贪吃的蛇,贪吃的蛇教案
- 常见神经系统疾病的临床诊断及处理原则题库【1】
- CAD二次开发——选择集(1)
- Android音乐播放器的设计与实现
- 教你如何用VB做控件*.ocx
- 如何向icloud上传文件_怎样用icloud把手机文件传到电脑上?
热门文章
- 【JZOJ 省选模拟】6707.异或树(xor)
- Vue3电影中后台开发纪实(一):脚手架创建项目
- 实验二 路由器密码恢复
- 51单片机小项目--红外巡线小车
- 第四范式胡时伟:AI的商业化才刚刚开始,谈“收割”尚早
- 从“以票治税”走向“以数治税”,鲲鹏助力税务开启全电发票新时代!
- 基于JAVA羽毛球馆场地管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
- matlab surf 画3维图时去掉网格以及使图像光滑
- 解决关于笔记本电脑更新后USB接口没有反应的问题
- java 二维数组排序