Python requests是一个优秀的Python HTTP客户端库,它可以方便地发送HTTP/1.1请求并接收响应。它还支持HTTP代理、Socks代理、HTTPS Certs验证和多部分上传。
在接口测试中,requests库是必不可少的。为了让大家更好的使用requests库进行接口测试,我们可以使用requests接口测试框架。以下是实现requests接口测试框架的完整攻略:
一、安装requests库
首先,我们需要在本地或虚拟环境中安装requests库。可以使用pip命令进行安装:
pip install requests
二、编写测试用例
接下来,我们需要编写测试用例。在编写测试用例之前,性能测试工程师需要确定测试场景、目标数据以及相关流程,确保测试顺利执行。测试用例应该覆盖和模拟各种常见的和不寻常的使用情况,并考虑使用负载测试来测试系统的承载能力。
在测试用例中,我们可以使用Python unittest框架,也可以使用Pytest框架。下面我们假设我们使用unittest框架编写测试用例。我们创建一个文件test_case.py,然后在里面编写如下代码:
import unittest
import requests
class TestCase(unittest.TestCase):
def setUp(self):
self.base_url = 'http://www.example.com'
self.headers = {'Content-Type': 'application/json'}
def test_case_one(self):
url = self.base_url + '/api/v1/user/1'
response = requests.get(url, headers=self.headers)
self.assertEqual(response.status_code, 200)
self.assertTrue(response.json().get('username') == 'test_user')
def test_case_two(self):
url = self.base_url + '/api/v1/user'
data = {'username': 'test_user'}
response = requests.post(url, headers=self.headers, json=data)
self.assertEqual(response.status_code, 201)
在上面的代码中,我们测试了两个接口。测试用例的名称必须以test_开头,我们还使用了setUp()方法来初始化base_url和headers变量。然后,我们在test_case_one()方法中测试了获取用户信息的接口,并验证了返回状态码和数据。我们在test_case_two()方法中测试了创建用户信息的接口,并验证了返回状态码。
三、运行测试用例并生成测试报告
最后,我们需要运行测试用例,并生成测试报告。unittest框架和pytest框架都支持在命令行中运行测试用例并生成测试报告。以下是在命令行中使用unittest框架运行测试用例的命令:
python -m unittest test_case.py -v
其中-v参数表示在控制台输出详细的测试结果。我们可以将测试结果输出到文件中,方法如下:
python -m unittest test_case.py -v > test_results.txt
如果想要生成HTML格式的测试报告,可以使用第三方库HtmlTestRunner。可以使用pip命令安装:
pip install html-testRunner
接着在测试用例文件中做相应的修改:
import unittest
import requests
import HtmlTestRunner
class TestCase(unittest.TestCase):
def setUp(self):
self.base_url = 'http://www.example.com'
self.headers = {'Content-Type': 'application/json'}
def test_case_one(self):
url = self.base_url + '/api/v1/user/1'
response = requests.get(url, headers=self.headers)
self.assertEqual(response.status_code, 200)
self.assertTrue(response.json().get('username') == 'test_user')
def test_case_two(self):
url = self.base_url + '/api/v1/user'
data = {'username': 'test_user'}
response = requests.post(url, headers=self.headers, json=data)
self.assertEqual(response.status_code, 201)
if __name__ == '__main__':
unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='./test_reports'))
在代码中,我们增加了if name == ‘main‘:语句,并使用HtmlTestRunner来运行测试用例并生成HTML格式的测试报告。输出文件保存在test_reports文件夹中。
这样,我们就可以使用Python requests接口测试框架来进行接口测试了。
示例:
下面是一个更加具体的接口测试示例,假设要测试的接口是一个用户注册接口,对应的URL是http://www.example.com/api/v1/register,请求方式是POST,请求参数是username和password,需要返回对应的用户ID和token。
对应的Python代码实现如下:
import unittest
import requests
class TestCase(unittest.TestCase):
def setUp(self):
self.base_url = 'http://www.example.com/api/v1'
self.headers = {'Content-Type': 'application/json'}
def test_case(self):
url = self.base_url + '/register'
data = {'username': 'test_user', 'password': 'test_pass'}
response = requests.post(url, headers=self.headers, json=data)
self.assertEqual(response.status_code, 200)
self.assertIsNotNone(response.json().get('user_id'))
self.assertIsNotNone(response.json().get('token'))
在测试用例中,我们测试了注册接口。我们首先初始化了base_url和headers变量。然后,我们在test_case()方法中测试了注册接口,并验证了返回状态码和数据。
当我们执行上述测试用例时,如果注册成功,应该能够得到类似于以下结果:
----------------------------------------------------------------------
Ran 1 test in 0.231s
OK
如果出现错误,可以根据错误信息进行修改和调试。