现在,我们将创建一个小的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 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.texttest_login_user.py –包含用于测试登录功能的测试方法。
test_login_valid使用电子邮件和密码测试有效的登录尝试
test_login_no_password在不通过密码的情况下测试无效的登录尝试
test_login_no_email测试无效的登录尝试,而不传递电子邮件。
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运行测试
看到的结果是
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▼
更多精彩推荐,请关注我们
▼
扫码关注更多精彩
你点的每个赞,我都认真当成了喜欢