软件研发

如何用Python编写REST API的单元测试

2020-09-28 18:03:10 | 来源:中培企业IT培训网

在过去的几个月中,正在从事一个名为B的项目。它是带有简单Web UI的徽章生成器,用于添加数据并生成PDF可打印徽章。B后端现在已转移到REST-API并测试REST-API中使用的功能,我们需要一些测试技术来测试API中使用的每个功能。为了我们的目的,我们选择了流行的单元测试 Python测试套件。在此,将讨论如何编写单元测试来测试B REST-API。

首先,让我们了解什么是单元测试以及为什么选择它。然后,我们将继续为B编写API测试。这些测试具有通用的结构,因此我提到的代码可以在其他REST API测试方案中正常工作,而无需做任何改动。让我们开始并逐步了解API测试。

  什么是单元测试?

单元测试是一个Python单元测试框架,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中以及使测试脱离报告框架。所述单元测试模块提供类,可以很容易地支持这些品质为一组测试。

  为什么要进行单元测试?

我们从单元测试中获得了两个主要好处,其中大部分价值都体现在第一个方面:

· 指导您的设计松耦合并充实。如果进行测试驱动的开发,它会将您编写的代码限制为仅需要的内容,并帮助您逐步开发该代码。

· 为重构和代码的少量更改提供快速的自动化回归。

· 单元测试还为您提供了有关系统的小部分工作原理的实时文档。

我们应该始终努力编写涵盖工作代码的全面测试。

现在,这是我如何在B的REST-API后端中编写用于测试代码的单元测试的一瞥。使用单元测试python包和请求模块,我们可以在测试自动化中测试REST API。

下面是我在其中一个pull请求中编写了单元测试的代码段。

def输出(response_type,消息,download_link):

如果download_link ==”:

response = [

{

'type':response_type,

'message':message

}

]

else:

response = [

{

'type':response_type,

'message':消息,

“ download_link”:download_link

}

]

返回jsonify({'response':response})

为了测试这个功能,我基本上创建了一个模拟对象,它可以模拟以可控的方式真实对象的行为,所以在这种情况下,模拟对象可以模拟输出功能和回报行为的东西像一个JSON响应没有击中真实REST API。现在,下一个挑战是解析JSON响应,并将响应JSON的特定值提供给Python自动化脚本。因此,Python将JSON作为字典对象读取,并且它确实简化了需要解析和使用JSON的方式。

#!/ usr / bin / env python3

“”“基本功能测试”””

import sys

import json

import unittest

来自app.main import的sys.path.append(“ ../ ..”)*

class TestFunctions(unittest.TestCase):

“”“客户端方法的测试用例。”””

def setup(self):

app.app.config ['TESTING'] = True

self.app = app.app.test_client()

#测试输出函数

def test_output(self):

使用app.test_request_context():

#模拟对象

out = output('错误','测试错误','本地主机')

#传递模拟对象

响应= [

{

'类型' :'error',

'message':'Test Error',

'download_link':'local_host'

}

]

数据= json.loads(out.get_data(as_text = True)

#声明响应

self.assertEqual(data ['response'],response)

如果__name__ =='__main__':

unittest.main()

最后,我们可以通过运行试行测试来验证一切正常 。

这就是在B项目中存储库中编写单元测试的方式。

上述就是关于如何用Python编写REST API的单元测试全部内容,想了解更多关于Python的信息,请继续关注中培伟业。