霍格沃兹测试开发学社


详见思维导图
├── api
│   ├── __init__.py
│   ├── tag.py
│   ├── user.py
│   └── wework_api.py
├── config
│   ├── __init__.py
│   ├── dev.yaml
│   ├── test.yaml
│   └── wework_config.py
├── testcase
│   ├── __init__.py
│   ├── schema.json
│   ├── test_tag.py
│   ├── test_tag_user.py
│   ├── test_tag_user_flow.py
│   └── test_user.py
└── utils
    ├── __init__.py
    ├── log_utils.py
    └── schema_utils.py
    └── jsonpath_utils.py
            企业微信是腾讯微信团队打造的企业通讯与办公工具,具有与微信一致的沟通体验,丰富的 OA 应用,和连接微信生态的能力,可帮助企业连接内部、连接生态伙伴、连接消费者。专业协作、安全管理、人即服务。
"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
import jsonpath
import requests
from wework_interface_test.utils.log_utils import log
class TestWework:
    def setup_class(self):
        app_id = "ww93348658d7c66ef4"
        secret = "T0TFrXmGYel167lnkzEydsjl6bcDDeXVmkUnEYugKIw"
        token_url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={app_id}&corpsecret={secret}"
        r = requests.get(token_url)
        self.token = r.json()["access_token"]
    def test_create_tag(self):
        """
        1. 创建
        2. 查询
        3. 删除(数据清理)
        :return:
        """
        tag_body = {"tagname": "AD测试2", }
        url = f"https://qyapi.weixin.qq.com/cgi-bin/tag/create?access_token={self.token}"
        r = requests.post(url, json=tag_body)
        tag_id = r.json().get("tagid")
        create_tag_result = r.json().get("errcode")
        log.info(f"创建标签的标签为{tag_id}")
        list_url = f"https://qyapi.weixin.qq.com/cgi-bin/tag/list?access_token={self.token}"
        r2 = requests.get(list_url)
        log.info("查询标签")
        list_resutl = jsonpath.jsonpath(r2.json(), f"$..taglist[?(@.tagid=={tag_id})]")
        delete_url = f"https://qyapi.weixin.qq.com/cgi-bin/tag/delete?access_token={self.token}"
        r3 = requests.get(delete_url, params={"tagid": tag_id})
        log.info(f"删除的标签为{r3.json()}")
        # 断言创建接口响应信息为正确
        assert create_tag_result == 0
        # 断言通过id获取的tag信息不为空
        assert list_resutl
    def test_update_tag(self):
        # 1. 查询tag
        # 2. 更新
        # 3. 查询
        log.info("查询标签")
        list_url = f"https://qyapi.weixin.qq.com/cgi-bin/tag/list?access_token={self.token}"
        r2 = requests.get(list_url)
        tag_id_list_resutl = jsonpath.jsonpath(r2.json(), f"$..tagid]")
        update_tag_id = tag_id_list_resutl[0]
        log.info(f"要更新的标签为{update_tag_id}")
        update_url = f"https://qyapi.weixin.qq.com/cgi-bin/tag/update?access_token={self.token}"
        update_data = {"tagid": update_tag_id, "tagname": "ADD2"}
        r3 = requests.post(update_url, json= update_data)
        update_tag_errcode = r3.json().get("errcode")
        log.info(f"查询id为{update_tag_id}的标签名称")
        list_url = f"https://qyapi.weixin.qq.com/cgi-bin/tag/list?access_token={self.token}"
        r4 = requests.get(list_url)
        list_result = jsonpath.jsonpath(r4.json(), f"$..taglist[?(@.tagid=={update_tag_id})].tagname")
        # 断言创建接口响应信息为正确
        assert update_tag_errcode == 0
        # 断言更新的tag名称为正确的
        assert list_result[0] == "ADD2"
    def test_list_tag(self):
        # 1. 展示tag
        # 2. 断言展示信息
        ...
    def test_delete_tag(self):
        # 1. 创建tag
        # 2. 删除tag
        # 3. 查询tag
        ...
    def test_addtagusers(self):
        # 1. 添加标签成员
        # 2. 获取标签成员
        # 3. 删除标签成员
        ...
    def test_tag_flow(self):
        # 1. 创建标签
        # 2. 更新标签
        # 3. 添加标签成员
        # 4. 获取标签成员
        # 5. 删除标签
        ...
    def test_tag_flow_fail(self):
        # 1. 创建标签
        # 2. 删除标签
        # 3. 添加标签成员失败
        ...
            在获取token 请求之前,先判断token 是否存在。
将代码进行优化,要求:
# 整体结构响应断言
class SchemaUtils:
    @classmethod
    def schema_validate_by_file(cls, obj,file_path):
        schema_data = json.load(open(file_path))
        return cls.schema_validate(obj, schema_data)
    @classmethod
    def schema_validate(cls, obj, schema):
        '''
        对比 python 对象与生成的 json schame 的结构是否一致
        '''
        try:
            validate(instance=obj, schema=schema)
            return True
        except Exception as e:
            log.error(f"schema 校验异常 =======> {e}")
            return False
jsonpath.jsonpath(r2, f"$..taglist[?(@.tagid=={tag_id})]")
我们今天学习的内容: