专栏首页开源优测[接口测试_B] 13 pytest+requests实战练习

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

接续这个文集中的文章:https://www.jianshu.com/nb/23293583

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

httpbin环境搭建

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

# 进入虚拟环境
pipenv shell

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

pipenv install httpbin
pipenv install gunicorn

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

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命令直接查看结果:
pytest -q run.py
  • 运行pytest命令生成测试报告:
pytest -q --tb=no --html=E:\python_interface_test\results\makehtml.html

总结

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

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

本文分享自微信公众号 - 开源优测(DeepTest)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python Selenium设计模式-POM

    前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点、应用场景和核心思想有一定的理解和掌握。...

    苦叶子
  • Python Selenium设计模式-POM

    前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点、应用场景和核心思想有一定的理解和掌握。...

    苦叶子
  • Python Selenium设计模式-POM

    前言 本文就python selenium自动化测试实践中所需要的POM设计模式进行分享,以便大家在实践中对POM的特点、应用场景和核心思想有一定的理解和掌握。...

    苦叶子
  • python爬取考研网的信息

    https://yz.chsi.com.cn/zsml/queryAction.do

    我被狗咬了
  • Python爬虫|你真的会写爬虫吗?

    咱们直接进入今天的主题---你真的会写爬虫吗?为啥标题是这样,因为我们日常写小爬虫都是一个py文件加上几个请求,但是如果你去写一个正式的项目时,...

    Python进击者
  • Python爬虫|你真的会写爬虫吗?

    咱们直接进入今天的主题---你真的会写爬虫吗?为啥标题是这样,因为我们日常写小爬虫都是一个py文件加上几个请求,但是如果你去写一个正式的项目时,你...

    AI算法与图像处理
  • Python爬虫架构5模板 | 你真的会写爬虫吗?

    咱们直接进入今天的主题---你真的会写爬虫吗?为啥标题是这样,因为我们日常写小爬虫都是一个py文件加上几个请求,但是如果你去写一个正式的项目时,你必须考虑到很...

    用户2769421
  • 爬虫入门实战课

    写在最前 通过爬虫,可以搜集互联网上很多信息,有助于科研(比如爬个会议的网站之类的),因此想以应用带动一下学习,因此就有了这个小练手。 爬虫代码的主要结构 一个...

    用户1148523
  • StreamCQL : 实时计算系统 ( CEP ) 中的持续查询语言 CQL

    StreamCQL : 实时计算系统中的持续查询语言 CQL  ( Continuous Query Language )  是一个针对流式数据的查询语言。相对...

    田春峰-JCJC错别字检测
  • flask 验证是否安全的URL格式(flask 88)

    def is_safe_url(target): ref_url = urlparse(request.host_url) test_url = urlpa...

    用户5760343

扫码关注云+社区

领取腾讯云代金券