在过去的几个月中,正在从事一个名为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的信息,请继续关注中培伟业。