网络编程
位置:首页>> 网络编程>> Python编程>> python接口测试对修改密码接口进行压测

python接口测试对修改密码接口进行压测

作者:FunTester  发布时间:2022-05-16 04:26:15 

标签:python,接口测试,修改密码,接口压测

引言

做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、soapui等等就比较麻烦。

我比较偏重脚本化执行测试用例,所以选择了groovy作为主要语言来进行接口测试,但是脚本依赖的库还是基于之前所在的java为主的测试框架,有兴趣的可以翻翻以前的文章。

项目的架构思路是以模块为基础把接口分类,然后对于接口的请求单独进行实现。通过一个user作为一个用户,携带各种属性,如:uname,pwd,token,userinfobean等信息。来作为各个模块类之间的信息传递。

回到修改密码接口,简单说一下我们接口的逻辑,先登录,获取token作为用户身份的唯一校验值,修改密码接口参数,newpwd,oldpwd,token。成功之后会返回新的token,作为用户继续其他操作的校验值。

测试脚本代码

分享一下自己的测试脚本代码:

class T8 extends OkayBase {
   public static void main(String[] args) {
       int thread =changeStringToInt(args[0])
       int times =changeStringToInt(args[1])
       List<ThreadBase> threads = new ArrayList<>()
       for (int i = 0; i < thread; i++) {
           OkayBase base = getBase(i)
           UserCenter userCenter = new UserCenter(base)
           userCenter.modifyPwd()
           ThreadBase threadBase = new ThreadBase() {
               @Override
               protected void before() {
               }
               @Override
               protected void doing() throws Exception {
                   userCenter.modifyPwd()
               }
               @Override
               protected void after() {
               }
           }
           threadBase.setTimes(times)
           threads.add(threadBase)
       }
       new Concurrent(threads).start()
       allOver()
   }
}

usercenter主要代码

main方法留了两个参数表示线程数和单线程请求数,下面是usercenter的主要代码。

public class UserCenter extends OkayBase {
   private static Logger logger = LoggerFactory.getLogger(UserCenter.class);
   public UserCenter(OkayBase okayBase) {
       super(okayBase);
   }
   public JSONObject modifyPwd() {
       String url = UserApi.MODIFY_PWD;
       JSONObject params = getParams();
       params.put("newpwd", getPassword(this.getUname()));
       params.put("oldpwd", getPassword(this.getPwd()));
       JSONObject response = getPostResponse(url, params);
       output(response);
       if (isRight(response)) {
           String string = response.getJSONObject("data").getString("token");
           this.setToken(string);
       }
       return response;
   }
}

okaybase主要代码

public class OkayBase extends SourceCode implements IBase {
   private static Logger logger = LoggerFactory.getLogger(OkayBase.class);
   int uid;
   String token;
   String uname;
   String pwd;
   public OkayBase(String uname, String pwd) {
       this.uname = uname;
       this.pwd = pwd;
       login();
   }
   public String getPassword() {
       String s = uname.substring(uname.length() - 6);
       return getPassword(s);
   }
   public String getPassword(String pwd) {
       return RSAUtils.getPassword(pwd);
   }
   public JSONObject getParams() {
       JSONObject json = getJson("uid=" + uid, "token=" + token);
       json.put("imei", "isFake");
       json.put("serial", "W170500652");
       json.put("ua", "f_an_4..0");
       return json;
   }
   public String getPwd() {
       return pwd;
   }
   public void setPwd(String pwd) {
       this.pwd = pwd;
   }
   public int getUid() {
       return uid;
   }
   public String getToken() {
       return token;
   }
   public void setToken(String token) {
       this.token = token;
   }
   public String getUname() {
       return uname;
   }
   @Override
   public boolean isRight(JSONObject jsonObject) {
       int code = TEST_ERROR_CODE;
       try {
           code = jsonObject.getJSONObject("meta").getInt("ecode");
           JSONObject data = jsonObject.getJSONObject("data");
           return code == 0 && !data.isEmpty();
       } catch (Exception e) {
           return false;
       }
   }
   /**
    * 测试结束,资源释放
    */
   public static void allOver() {
       FanLibrary.testOver();
   }
}

来源:https://mp.weixin.qq.com/s/9CL_6-uZOlAh7oeo7NOpag

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com