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

引言

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

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

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

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

测试脚本代码

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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的主要代码。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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主要代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

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();

    }

}

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
qq群号:485187702【暗号:csdn11】
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值