Mock技术_Python代码演示

1、案例1:

json内容:约定URI

{
	"description":"demo1=约定URI",
	"request":{
		"uri":"/demo1"
	},
	"response":{
		"text":"Hello,demo1"
	}
}

python内容:

import requests
api_url = 'http://127.0.0.1:9090/demo1'
reps = requests.get(api_url)
print(reps.text)
print(reps.status_code)
# 输出:
# Hello,demo1
# 200

2、案例2:

json内容:约定请求参数

{
	"description":"demo2=约定请求参数",
	"request":{
		"uri": "/demo2",
		"queries":{
			"key1":"abc",
			"key2":"123"
		  }
		},
	"response":{
		"text":"Hello,demo2"
	}
}

python代码:get/post  带参数

import requests
HOST = "http://127.0.0.1:9090"
def test():
    url = f"{HOST}/demo2"
    resp = requests.get(url, params={"key1": "abc", "key2": "123"})
    resp = requests.post(url, params={"key1": "abc", "key2": "123"})
    print(resp.text)

if __name__ == '__main__':
    test()
    # 输出:Hello,demo2

案例3:

json内容:
{
    "description":"1、提交申请接口",
	"request":{
		"uri":"/api/order/create/",
		"json":{
				"user_id":"001",
				"goods_id":"123456",
				"num":1,
				"amount":100.8
			}
	 }, 
	"response":{
		"json":{"order_id": "0001"}
    }
},


{
	"description":"2、查询订单接口",
	"request":{
		"uri":"/api/order/get_result/",
		"method":"GET",
		"queries":{
					"order_id": "0001"
				}
		},
	"response":{
		"status":200,
		"json":{
					"user_id": "001",
					"goods_id": "123456",
					"num":1,
					"amount":100.8
			}
	}
}

python代码:

import time
import requests
import threading

HOST = "http://127.0.0.1:9090"

# 1、提交申诉请求
def create_order():
    url = f"{HOST}/api/order/create/"
    payload = {
        "user_id": "001",
        "goods_id": "123456",
        "num": 1,
        "amount": 100.8
    }
    resp = requests.post(url, json=payload)
    return resp.json()['order_id']
    # print(resp.json()['order_id'])

# if __name__ == '__main__':
#     create_order()
#     # 输出:0001


"""
查询接口:
    1、频率            interval
    2、多少时间超时      timeout
    3、如果在超时时间内,查到结果就不需要继续查询!
"""

# 2、查询申诉请求的结果,使用请求接口的返回id去查询
def get_order_result(orderID, interval=3, timeout=20):
    """
    :param orderID:  订单id
    :param interval: 频率    s
    :param timeout:  超时时间 s
    :return:
    """
    url = f"{HOST}/api/order/get_result01/"
    payload = {"order_id": orderID}
    # 1、开始时间
    startTime = time.time()  # 获取当时时间  s单位
    # 2、结束时间
    endTime = startTime + timeout
    # 3、选择循环!
    # while   靠条件结束
    # for     知道循环次数或遍历操作
    cnt = 0   # 计数变量
    while time.time() < endTime:
        resp = requests.get(url, params=payload)
        cnt += 1
        if resp.text:  # 有响应数据就结束循环!
            print(f"第{cnt}次查询,已经有查询结果>>> ", resp.text)
            break
        else:
            print(f"第{cnt}次查询,没有结果,请稍等...")

        # 4、设置频率
        time.sleep(interval)  # 间隔多久运行一次
    print("查询完成")
    return resp.text



if __name__ == '__main__':
    # 1、获取id
    id = create_order()
    print(id)
    # 2、查询结果
    # res = get_order_result(id)
    # print(res)

    """
    t1 = threading.Thread()  创建线程方法
    target                   希望把哪一个函数作为子线程
    args                     这个函数的实参
    """
    t1 = threading.Thread(target=get_order_result, args=(id,))

    # 设置守护线程  主线程退出了,子线程get_order_result 也退出
    t1.setDaemon(True)
    # 启动线程
    t1.start()
    """
    扩展知识点:多线程技术
    并发:
    并行:
        1- io密集型   阻塞
            sleep()  requests库
        2- cpu密集型  计算型,这个多线程不一定省时间!

    预期效果:
        希望在异步查询等待3s的时间里可以去执行其他模块接口!
    """
    for one in range(50):
        time.sleep(1)
        print(f'{one}-----我正在执行其他模块的自动化测试----')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

卢同学.

但行好事 莫问前程

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

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

打赏作者

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

抵扣说明:

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

余额充值