企业微信接口自动化2

目录

pytest-xdist插件

FileLock()线程锁


工程解构:

pytest-xdist插件

FileLock()线程锁

此处作用是 使session只调用一次

代码

pytest.ini(这个配置文件的作用是开启多线程 

[pytest]
addopts = -n auto

test_work.py

import re

import pytest
import requests
from filelock import FileLock


def test_create_data():
    data = [("zhangjingxing" + str(x), "jingxing", "1387900%04d" % x, 0) for x in range(10)]
    print("\n")
    print(data)
    return data


class TestWork:
    # 获取token
    @pytest.fixture(scope="session")
    def test_token(self):
        res = None
        while FileLock("session.lock"):
            corpid = "xxx"
            corpsecret = "xxx"
            res = requests.get(f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={corpsecret}")
            print(res.json()['access_token'])
        return res.json()['access_token']

    # 获取部门列表
    def test_get_department(self, test_token):
        userid = 2
        r = requests.get(
            f"https://qyapi.weixin.qq.com/cgi-bin/department/simplelist?access_token={test_token}&id={userid}")
        print(r.json())
        return r.json()
        # assert r.json()['errcode'] == 0

    # 获取成员ID列表
    def test_post_user(self, test_token):
        r = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token={test_token}")
        print(r.json())
        return r.json()

    # 创建成员
    # @pytest.mark.parametrize("userid, name, mobile, errcode", [("zhangjingxing", "jingxing", "13801100000", 0)])
    def test_create_member(self, userid, name, mobile, test_token):
        data = {
            "userid": userid,
            "name": name,
            "alias": name,
            "mobile": mobile,
            "department": [
                "6"
            ],
            "order": [
                "10"
            ],
            "position": "产品经理",
            "gender": "1",
            "email": "zhangsan@gzdev.com",
            "biz_mail": "",
            "is_leader_in_dept": [
                "1"
            ],
            "direct_leader": [
                "hal"
            ],
            "enable": "1",
            "avatar_mediaid": "",
            "telephone": "020-123456",
            "address": "广州市海珠区新港中路",
            "main_department": "1",
            "to_invite": True,
            "external_position": "高级产品经理",
            "external_profile": {

            }
        }
        r = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token={test_token}&debug=1",
                          json=data)
        print(r.json())
        return r.json()

    # 删除成员
    def test_delete_member(self, userid, test_token):
        r = requests.get(
            f"https://qyapi.weixin.qq.com/cgi-bin/user/delete?access_token={test_token}&userid={userid}")
        print(r.json())
        return r.json()

    # 更新成员
    def test_update_member(self, userid, name, mobile, test_token):
        data = {
            "userid": userid,
            "alias": name,
            "mobile": mobile
        }
        r = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/user/update?access_token={test_token}",
                          json=data)
        print(r.json())
        return r.json()

    # 创建部门
    def test_create_department(self, test_token):
        data = {
            "name": "特斯拉",
            "name_en": "tesla",
            "parentid": 1,
            "order": 1,
            "id": 6
        }
        r = requests.post(f"https://qyapi.weixin.qq.com/cgi-bin/department/create?access_token={test_token}",
                          json=data)
        print(r.json())

    @pytest.mark.parametrize("userid, name, mobile, errcode", test_create_data())
    def test_all(self, userid, name, mobile, errcode, test_token):
        try:
            assert "created" == self.test_create_member(userid, name, mobile, test_token)['errmsg']
        except AssertionError as e:
            if "mobile existed" in e.__str__():
                print("\n11111111111111111111111111111111111111111111111111111111111111111111111111")
                re_userid = re.findall(":(.*)'", e.__str__()[0])
                if re_userid.endswith("'") or re_userid.endswith('"'):
                    re_userid = re_userid[:-1]
                print(re_userid)
                assert "deleted" == self.test_delete_member(userid, test_token)['errmsg']
                assert "created" == self.test_create_member(userid, name, mobile, test_token)['errmsg']

        assert userid == self.test_post_user(test_token)['dept_user'][-1]['userid']
        assert "updated" == self.test_update_member(userid, name, mobile, test_token)["errmsg"]
        assert "deleted" == self.test_delete_member(userid, test_token)["errmsg"]
        assert userid != self.test_post_user(test_token)['dept_user'][-1]['userid']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值