一,应用技术点概述&准备工作
java + restassured + junit + allure2
准备工作
本文中主要代码经过多次迭代, 初始代码已不可考,有部分是从 网上复制而来,重点看思路与实现过程。
- pom中添加依赖
- 测试获取token,要调试企业微信的api需要获取到access_token

- 需要的corpId,自己所有的企业微信的公司id
- 需要的secret,企业微信中各个应用都有一个单独的密匙,只有拿到密匙才能肆意调戏他的api

- 本次文章主要以通讯录api的测试为主
- 然后进行获取token的测试 ```java
package cn.addicated.Wework;
import io.restassured.RestAssured; import io.restassured.response.Response;
/**
- @author addicated
@description */ public class getAccess_token {
/**
- 获取wework的access_token
- @param corpid 企业id
- @param corpsecret 应用密钥
- @return
*/
public Response getToken(String corpid, String corpsecret) {
Response response = RestAssured.given()
return response; }.log().all() //打印请求头信息.queryParam("corpid", corpid).queryParam("corpsecret", corpsecret).when().get("https://qyapi.weixin.qq.com/cgi-bin/gettoken") //发送get请求.then().extract().response();
}
- 直接使用idea中的生成功能,生成对应的测试方法 热键为 alt+ insert- - 接着去测试方法中进行执行。```javaimport com.addicated.wework.WeworkConfig;import com.addicated.wework.Wework;import org.junit.Test;/*** @description:* @author: Adi* @time: 2020/9/5 15:53**/public class TestGetToken {@Testpublic void testToken() {// 最基本的一个case ,基于这个然后进行封装,不封装// 将gettoekn完整的封装成一个api,在其他的case中可以直接进行调用// given().log().all().queryParam("corpid",com.addicated.test.WeworkConfig.getInstance().corpId).// queryParam("corpsecret",com.addicated.test.WeworkConfig.getInstance().secret).// when().get("https://qyapi.weixin.qq.com/cgi-bin/gettoken").// then().log().all().statusCode(200).body("errcode",equalTo(0));Wework wework = new Wework();String token = wework.getWeworkToken(WeworkConfig.getInstance().secret);assert token !=null;}}
- 运行结果大致如下
```html
Request method: GET
Request URI: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ww2df66b08696343ff&corpsecret=vj1C5akNwtxZb18MECiNZym4IVBTWEi18L57r1KJF2s
Proxy:
Request params: Query params: corpid=ww2df66b08696343ff
Form params:corpsecret=vj1C5akNwtxZb18MECiNZym4IVBTWEi18L57r1KJF2s
Path params: Headers: Accept=/ Cookies: Multiparts: Body: HTTP/1.1 200 OK Server: nginx Date: Thu, 07 May 2020 08:11:02 GMT Content-Type: application/json; charset=UTF-8 Content-Length: 277 Connection: keep-alive Error-Code: 0 Error-Msg: ok
{ “errcode”: 0, “errmsg”: “ok”, “access_token”: “XQntbz4sN9lyxTMbsoLwmi2sYFMeJZN-L1l52lX5NwJjhhuqbtGmnD2ubk0uo-EQVGi79zM5dDan7IFDUpSc_NPqYucD7TLjgEZl4JrFx1-TznpjOno573pmNq2mpKK7MTcSOW141Fgbp1867LtKtoRnbeKg-ZE46LhBXAzF6qPbO-72Bdx9xHAA1CqXxHweDj97Wg14UHXRvspxo54sUw”, “expires_in”: 7200 }
- 可见已经可以正常的取到token,后续测试工作可以正常向下进行。- 此处可以进行二次封装方便后面进行直接调用传token操作api- 新建一个weWorkConfig类,吧取得token所用到的信息定义成为类属性```javapackage com.addicated.wework;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;import java.io.IOException;/*** @description:* @author: Adi* @time: 2020/9/5 16:51**/public class WeworkConfig {// 配置文件,存放一些通用的配置public String agentId = "1000002";public String secret = "sScHMyPF5VynfvbRwXVYvmOVjyJX4y2dhBZfP8CQWoU";// 公司idpublic String corpId = "ww01499f8ea8a9861f";// 通讯录secretpublic String contactSecret = "2fUo73u09VhsVhxvdb2ffCvWVkggPa52_KKx9cvXDxA";// 使用单例、// 被实例化的时候进行判断是否为空,为空则实例化,否则直接返回已经实例化好的对象// 以实现单例private static WeworkConfig weworkConfig;public static WeworkConfig getInstance() {if (weworkConfig == null) {weworkConfig = load("/conf/WeworkConfig.yaml");System.out.println(weworkConfig);System.out.println(weworkConfig.agentId);}return weworkConfig;}// 从配置文件中读取,先定义出来,后期完善public static WeworkConfig load(String path) {//fixed read from yaml or jsonObjectMapper mapper = new ObjectMapper(new YAMLFactory());try {return mapper.readValue(WeworkConfig.class.getResourceAsStream(path), WeworkConfig.class);} catch (IOException e) {e.printStackTrace();return null;}// System.out.println(mapper.writeValueAsString(WeworkConfig.getInstance()));// 读取文件中的配置,并返回一个对应的实例}}
使用单例模式来维护全局配置,见上述代码
使用hamcrest来进行断言。
import com.addicated.wework.WeworkConfig;import com.addicated.wework.Wework;import com.sun.org.apache.xpath.internal.operations.NotEquals;import org.junit.Test;import static org.hamcrest.CoreMatchers.equalTo;import static org.hamcrest.CoreMatchers.not;import static org.hamcrest.MatcherAssert.assertThat;/*** @description:* @author: Adi* @time: 2020/9/5 15:53**/public class TestGetToken {@Testpublic void testToken() {// 最基本的一个case ,基于这个然后进行封装,不封装// 将gettoekn完整的封装成一个api,在其他的case中可以直接进行调用// given().log().all().queryParam("corpid",com.addicated.test.WeworkConfig.getInstance().corpId).// queryParam("corpsecret",com.addicated.test.WeworkConfig.getInstance().secret).// when().get("https://qyapi.weixin.qq.com/cgi-bin/gettoken").// then().log().all().statusCode(200).body("errcode",equalTo(0));Wework wework = new Wework();String token = wework.getWeworkToken(WeworkConfig.getInstance().secret);assertThat(token, not(equalTo(null)));}}
当前代码目录如下
二,了解企业微信的api
- 拿到token之后,可以肆意玩弄企业微信的api了,选取几个简单的api进行入门操作,,部门管理模块

- 先浏览一下相关功能的api描述和文档





- 先以获取部门列表api为例
- 为了区分个人负责模块,创建包com.任意.wework.contact contact是通讯录的英文译名。

- 下建类为业务线,比如通讯录下有部门管理,成员管理,标签管理,contact中放共通代码。
