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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值