Python reques接口测试框架实现代码

  • Post category:Python

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

如果出现错误,可以根据错误信息进行修改和调试。