最近在研究用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自动化脚本相关推荐

  1. java appium_Android应用开发之AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)...

    本文将带你了解Android应用开发AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试),希望本文对大家学Android有所帮助. 一.为什么需要封 ...

  2. 《移动App测试实战》——2.2 App UI层面的自动化

    本节书摘来自华章出版社<移动App测试实战>一 书中的第2章,第2.2节,作者:邱鹏 陈吉 潘晓明,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.2 Ap ...

  3. java自动化_作为测试工程师进阶自动化选Java还是Python?

    这是很多测试工程师从功能跨入自动化纠结的问题,今天本文带大家一探究竟. Java和Python一直都是两种很火的语言,用Python的一定觉得Python好,用Java的只觉得Java好. Java语 ...

  4. freemarker 生成java_半自动化Java代码生成器[利用freemarker模板生成]

    rapid-generator 半自动化Java代码生成器[利用freemarker模板生成] 增加一些定制和扩展, 修改为基于MAVEN的格式. 整体架构保持不变. 增加的特性为: 支持表名前缀去除 ...

  5. 千锋重庆Java学习之五大Java自动化部署工具

    在Java开发工具中,有一种是自动化部署工具,下面千锋重庆小编就给大家介绍五大Java自动化部署工具: 五大Java自动化部署工具 Jenkins Jenkins 是一种开源持续集成(CI) 工具,能 ...

  6. 工欲善其事,必先利其器:5大Java自动化部署工具

    工欲善其事必先利其器:5大Java自动化部署工具,下面和小编一起来看看吧! 在Java开发工具中,有一种是自动化部署工具,下面小编就给大家介绍五大Java自动化部署工具: Jenkins Jenkin ...

  7. android冒烟测试自动化,自动化冒烟测试脚本应当遵循的原则

    自动化冒烟测试脚本应当遵循的原则 发表于:2009-06-29来源:作者:点击数: 自动化冒烟测试脚本应当遵循的原则: 1.覆盖主要功能: 冒烟测试不是 系统测试 或 集成测试 ,所以不需要面面俱到, ...

  8. python自动化办公 51cto_利用python实现批量自动化运维脚本案例

    本文为通过密码或密钥实现python批量自动化运维脚本案例分享,是老男孩linux培训 python课程教学案例内容,后续会分享多线程并发执行这个脚本的更高级的功能(http://oldboy.blo ...

  9. python ios自动化_iOS python 自动化构建打包脚本

    1.准备工作和注意事项 2.配置填写 项目.python脚本文件及plist目录: plist文件: 3.生成相关目录 4.xcodebuild命令打包 5.上传svn 建议: 1.上传app sto ...

最新文章

  1. Bluetooth ATT介绍
  2. Qt在VS2010的安装与配置
  3. 函数进阶_月隐学python第11课
  4. centos7安装Cloudera Manager
  5. php提示是否运行,php运行错误提示
  6. 1、css引入的方式有哪些?_发泡机的原理都有哪些呢?
  7. 模电之半导体基础篇3(半导体二极管、二极管应用)
  8. asp.net 获取IP地理位置的几个主要接口
  9. SVN上传文件注意事项-------------------养成良好的项目文件上传习惯
  10. linux安装软件-rpm命令解析
  11. python连续写入数据之间用什么隔开_elasticsearch之使用Python批量写入数据
  12. mysql字符校对规则作用_(2)MySQL字符集及校对规则的理解
  13. 计算机网络知识点总结(一)-----蜂窝移动网络
  14. python atan_Python atan或atan2,我应该使用什么?
  15. matlab 贪吃的蛇,贪吃的蛇教案
  16. 常见神经系统疾病的临床诊断及处理原则题库【1】
  17. CAD二次开发——选择集(1)
  18. Android音乐播放器的设计与实现
  19. 教你如何用VB做控件*.ocx
  20. 如何向icloud上传文件_怎样用icloud把手机文件传到电脑上?

热门文章

  1. 【JZOJ 省选模拟】6707.异或树(xor)
  2. Vue3电影中后台开发纪实(一):脚手架创建项目
  3. 实验二 路由器密码恢复
  4. 51单片机小项目--红外巡线小车
  5. 第四范式胡时伟:AI的商业化才刚刚开始,谈“收割”尚早
  6. 从“以票治税”走向“以数治税”,鲲鹏助力税务开启全电发票新时代!
  7. 基于JAVA羽毛球馆场地管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
  8. matlab surf 画3维图时去掉网格以及使图像光滑
  9. 解决关于笔记本电脑更新后USB接口没有反应的问题
  10. java 二维数组排序