13 pytest+requests实战练习

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

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

httpbin环境搭建

VMware12

ubuntu kylin 16.04_x64

python3.5

安装虚拟环境,pipenv:

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

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

测试httpbin接口

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

classTestHttpMethods:

@classmethod

defsetup_class(cls):

cls.url ='http://192.168.86.131:8088/'

cls.data = {'haha':'nihao'}

deftest_get(self):

url = urljoin(self.url,'get')

r = requests.get(url,params=self.data).json()

print(r)

# assert r['url'] == url

assertr['args'] ==self.data

deftest_post(self):

url = urljoin(self.url,'post')

r = requests.post(url,data=self.data).json()

assertr['url'] == url

assertr['form'] ==self.data

deftest_patch(self):

url = urljoin(self.url,'patch')

r = requests.patch(url,data=self.data).json()

assertr['url'] == url

assertr['form'] ==self.data

deftest_put(self):

url = urljoin(self.url,'put')

r = requests.put(url,data=self.data).json()

assertr['url'] == url

assertr['form'] ==self.data

deftest_delete(self):

url = urljoin(self.url,'delete')

r = requests.delete(url,data=self.data).json()

assertr['url'] == url

assertr['form'] ==self.data

classTestAuth:

@classmethod

defsetup_class(cls):

cls.url ='http://192.168.86.131:8088/'

# cls.data = {'haha': 'nihao'}

deftest_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)

assertr['user'] == data[]

deftest_basicauth_n(self):

data = ('aa','123')

url = urljoin(self.url,'/'.join(('basic-auth',) + data))

r = requests.get(url,auth=('aa','bb'))

assertr.status_code ==401

deftest_bearer_y(self):

headers = {'Authorization':'justtestauth'}

url = urljoin(self.url,'bearer')

r = requests.get(url,headers=headers)

assertr.status_code ==200

r = r.json()

assertr['token'] == headers['Authorization']

deftest_bearer_n(self):

headers = {}

url = urljoin(self.url,'bearer')

r = requests.get(url,headers=headers)

assertr.status_code ==401

运行pytest命令

运行pytest命令直接查看结果:

运行pytest命令生成测试报告:

总结

在一个py文件中编写了一堆用例,并且能够输出报告了,终于踏出了第一步

缺点说明:

1、没有进行数据隔离:接口、请求参数、断言数据都在同一文件中;

2、不能设置配置信息:如测试地址改变等,不能直接通过配置文件修改;

3、没有记录日志信息:没有记录接口的执行信息,如果出现bug,无法提供定位信息;

作者:乐大爷L

链接:https://www.jianshu.com/p/d75f24e5de29

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180702A06HMA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券