打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一个测试API的pytest框架

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

在这里,我们将为

  • 列出一些用户

  • 与用户登录

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

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

导入pytest @ pytest.fixture def supply_url(): 返回“ https://reqres.in/api

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

  • test_list_valid_user测试有效的用户访存并验证响应

  • test_list_invaliduser测试无效的用户访存并验证响应

import pytestimport requestsimport 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测试无效的登录尝试,而不传递电子邮件。

import pytestimport requestsimport jsondef 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运行测试

看到的结果是

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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
pytest文档16-用例a失败,跳过测试用例b和c并标记失败xfail
tep集成HttpRunner与Flask实现开箱即用
httprunner 3.x学习2 - 测试用例结构(testcase)
[接口测试_B] 02 Pytest的简单示例
python server 从浏览器中获取输入(web.py)
超详细的 pytest 教程 (三) 之用例标记和测试执行篇
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服