## 实战要求
>[info] 巩固前面章节中关于requests库,pytests库,threading库的使用
>1. 对一个HTTP接口进行功能测试
>2. 对一个HTTP接口进行压力测试
>练习接口1:http://httpbin.org/json
>练习接口2:https://postman-echo.com/get
## 规则
* 请独立完成实战要求,完成后再参考下面的示例代码
* 如果觉得自己的代码<span style="color:red">*更加优雅,更加高效*</span>,欢迎留言**,与大家一起**分享**哦~
:-: <span style="color:green;font-size:30;">一起来挑战吧~</span>
<br>
## 参考代码:
```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import pytest
@pytest.fixture(params=[{"name": "Milton"}, {"name": "Cherish"}])
def test_data(request):
return request.param
class UrlData(object):
def __init__(self):
self.title_url = "http://httpbin.org/json"
self.name_url = "https://postman-echo.com/get"
class TestJson(object):
@pytest.fixture(scope="session")
def ud(self):
return UrlData()
def test_title(self, ud):
resp = requests.get(ud.title_url)
assert resp.status_code == 200, "HTTP返回码不等于200"
assert resp.json().get("slideshow").get("title") == "Sample Slide Show", "标题与预期值不符"
def test_name(self, ud, test_data):
resp = requests.get(ud.name_url, params=test_data)
assert resp.status_code == 200, "HTTP返回码不等于200"
assert resp.json().get("args").get("name") == test_data.get("name"), "返回名称与传入值不相等"
if __name__ == '__main__':
pytest.main()
```
为了对某个接口施压,加入多线程,调整如下`test_title`测试用例如下
```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import pytest
import threading
class UrlData(object):
def __init__(self):
self.title_url = "http://httpbin.org/json"
self.name_url = "https://postman-echo.com/get"
class TestJson(object):
@pytest.fixture(scope="session")
def ud(self):
return UrlData()
def title(self,ud):
resp = requests.get(ud.title_url)
assert resp.status_code == 200, "HTTP返回码不等于200"
print(resp.json())
assert resp.json().get("slideshow").get("title") == "Sample Slide Show", "标题与预期值不符"
def test_title(self, ud):
t1 = threading.Thread(target=self.title,args=(ud,))
t2 = threading.Thread(target=self.title,args=(ud,))
t1.start()
t2.start()
if __name__ == '__main__':
pytest.main()
```
<hr style="margin-top:100px">
:-: ![](https://box.kancloud.cn/2ff0bc02ec938fef8b6dd7b7f16ee11d_258x258.jpg)
***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
- 前言
- chapter01_开发环境
- chapter02_字符串的使用
- chapter03_列表的使用
- chapter04_字典的使用
- chapter05_数字的使用
- chapter06_元组的使用
- chapter07_集合的使用
- chapter08_输入输出
- chapter09_控制流程
- chapter10_实例练习_登录1
- chapter11_python函数入门
- chapter12_python中的类
- chapter13_轻松玩转python中的模块管理
- chapter14_掌握学习新模块的技巧
- chapter15_通过os模块与操作系统交互
- chapter16_子进程相关模块(subprocess)
- chapter17_时间相关模块(time & datetime)
- chapter18_序列化模块(json)
- chapter19_加密模块(hashlib)
- chapter20_文件的读与写
- chapter21_阶段考核2_登录
- chapter22_小小算法挑战(排序&二分法)
- chapter23_用多线程来搞事!
- chapter24_HTTP接口请求(requests)
- chapter25_接口测试框架(pytest)
- chapter26_阶段考核3_HTTP接口测试
- chapter27_HTML解析(pyquery)
- chapter28_阶段考核4_爬虫下载网易汽车
- chapter29_python中的那些编码坑
- chapter30_MySQL数据库操作
- chapter31 高级特性_迭代器与生成器
- chapter32 高级特性_装饰器
- chapter33 高级特性_列表处理