前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[接口测试_B] 13 pytest+requests实战练习

[接口测试_B] 13 pytest+requests实战练习

作者头像
苦叶子
发布2018-07-25 16:19:23
6520
发布2018-07-25 16:19:23
举报
文章被收录于专栏:开源优测开源优测
接续这个文集中的文章:https://www.jianshu.com/nb/23293583

找不到免费的接口,所以依然以requests官方文档中出现的httpbin为示例,为了保持网络的稳定,可以把httpbin搭建在本地。

httpbin环境搭建

  • VMware12
  • ubuntu kylin 16.04_x64
  • python3.5
代码语言:javascript
复制
sudo apt-get install python3-pip
  • 安装虚拟环境,pipenv:
代码语言:javascript
复制
python3 -m pip install pipenv
# 在项目目录下
pipenv install

# 进入虚拟环境
pipenv shell

在安装pip后,创建虚拟环境,安装httpbin和gunicorn:

代码语言:javascript
复制
pipenv install httpbin
pipenv install gunicorn

启动httpbin,如果启动后,宿主机无法访问,查看防火墙设置,把端口加入iptables:

代码语言:javascript
复制
gunicorn -b :8088 httpbin:app

测试httpbin接口

前面了解requests的过程中,多次用到httpbin接口做示例。对这个接口应该比较熟悉了。先实现简单的接口测试。

class TestHttpMethods: @classmethod def setup_class(cls): cls.url = 'http://192.168.86.131:8088/' cls.data = {'haha': 'nihao'} def test_get(self): url = urljoin(self.url, 'get') r = requests.get(url, params=self.data).json() print(r) # assert r['url'] == url assert r['args'] == self.data def test_post(self): url = urljoin(self.url, 'post') r = requests.post(url, data=self.data).json() assert r['url'] == url assert r['form'] == self.data def test_patch(self): url = urljoin(self.url, 'patch') r = requests.patch(url, data=self.data).json() assert r['url'] == url assert r['form'] == self.data def test_put(self): url = urljoin(self.url, 'put') r = requests.put(url, data=self.data).json() assert r['url'] == url assert r['form'] == self.data def test_delete(self): url = urljoin(self.url, 'delete') r = requests.delete(url, data=self.data).json() assert r['url'] == url assert r['form'] == self.data class TestAuth: @classmethod def setup_class(cls): cls.url = 'http://192.168.86.131:8088/' # cls.data = {'haha': 'nihao'} def test_basicauth_y(self): data = 'aa', '123' url = urljoin(self.url, '/'.join(('basic-auth',) + data)) print(data) r = requests.get(url, auth=(data)).json() print(r) assert r['user'] == data[0] def test_basicauth_n(self): data = ('aa', '123') url = urljoin(self.url, '/'.join(('basic-auth',) + data)) r = requests.get(url, auth=('aa', 'bb')) assert r.status_code == 401 def test_bearer_y(self): headers = {'Authorization': 'justtestauth'} url = urljoin(self.url, 'bearer') r = requests.get(url, headers=headers) assert r.status_code == 200 r = r.json() assert r['token'] == headers['Authorization'] def test_bearer_n(self): headers = {} url = urljoin(self.url, 'bearer') r = requests.get(url, headers=headers) assert r.status_code == 401

运行pytest命令
  • 运行pytest命令直接查看结果:
代码语言:javascript
复制
pytest -q run.py
  • 运行pytest命令生成测试报告:
代码语言:javascript
复制
pytest -q --tb=no --html=E:\python_interface_test\results\makehtml.html

总结

  • 在一个py文件中编写了一堆用例,并且能够输出报告了,终于踏出了第一步
  • 缺点说明: 1、没有进行数据隔离:接口、请求参数、断言数据都在同一文件中; 2、不能设置配置信息:如测试地址改变等,不能直接通过配置文件修改; 3、没有记录日志信息:没有记录接口的执行信息,如果出现bug,无法提供定位信息;

作者:乐大爷L 链接:https://www.jianshu.com/p/d75f24e5de29 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • httpbin环境搭建
  • 测试httpbin接口
    • 运行pytest命令
    • 总结
    相关产品与服务
    专用宿主机
    专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档