前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个测试API的pytest框架

一个测试API的pytest框架

作者头像
用户7466307
发布2020-06-16 17:07:00
1.3K0
发布2020-06-16 17:07:00
举报

现在,我们将创建一个小的pytest框架来测试API。这里使用的API是https://reqres.in/的免费API 。该网站仅提供可测试的API。该网站不存储我们的数据。

在这里,我们将为

  • 列出一些用户
  • 与用户登录

使用给定的代码创建以下文件

conftest.py-有一个fixture,可以为所有测试方法提供基本网址

代码语言:javascript
复制
导入pytest 
@ pytest.fixture 
def supply_url():
  返回“ https://reqres.in/api”

test_list_user.py –包含列出有效和无效用户的测试方法

  • test_list_valid_user测试有效的用户访存并验证响应
  • test_list_invaliduser测试无效的用户访存并验证响应
代码语言:javascript
复制
import pytest
import requests
import json
@pytest.mark.parametrize("userid, firstname",[(1,"George"),(2,"Janet")])
def test_list_valid_user(supply_url,userid,firstname):
  url = supply_url + "/users/" + str(userid)
  resp = requests.get(url)
  j = json.loads(resp.text)
  assert resp.status_code == 200, resp.text
  assert j['data']['id'] == userid, resp.text
  assert j['data']['first_name'] == firstname, resp.text

def test_list_invaliduser(supply_url):
  url = supply_url + "/users/50"
  resp = requests.get(url)
  assert resp.status_code == 404, resp.text

test_login_user.py –包含用于测试登录功能的测试方法。

  • test_login_valid使用电子邮件和密码测试有效的登录尝试
  • test_login_no_password在不通过密码的情况下测试无效的登录尝试
  • test_login_no_email测试无效的登录尝试,而不传递电子邮件。
代码语言:javascript
复制
import pytest
import requests
import json
def test_login_valid(supply_url):
  url = supply_url + "/login/" 
  data = {'email':'test@test.com
  ','password':'something'}
  resp = requests.post(url, data=data)
  j = json.loads(resp.text)
  assert resp.status_code == 200, resp.text
  assert j['token'] == "QpwL5tke4Pnpja7X", resp.text

def test_login_no_password(supply_url):
  url = supply_url + "/login/" 
  data = {'email':'test@test.com'}
  resp = requests.post(url, data=data)
  j = json.loads(resp.text)
  assert resp.status_code == 400, resp.text
  assert j['error'] == "Missing password", resp.text

def test_login_no_email(supply_url):
  url = supply_url + "/login/" 
  data = {}
  resp = requests.post(url, data=data)
  j = json.loads(resp.text)
  assert resp.status_code == 400, resp.text
  assert j['error'] == "Missing email or username", resp.text

使用py.test -v运行测试

看到的结果是

代码语言:javascript
复制
test_list_user.py::test_list_valid_user[1-George] PASSED                                                                                                                                                                               
test_list_user.py::test_list_valid_user[2-Janet] PASSED                                                                                                                                                                                
test_list_user.py::test_list_invaliduser PASSED                                                                                                                                                                                        
test_login_user.py::test_login_valid PASSED                                                                                                                                                                                            
test_login_user.py::test_login_no_password PASSED                                                                                                                                                                                      
test_login_user.py::test_login_no_email PASSED
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试test 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档