怎么自学python自动化测试仪器经销商_还在纠结怎么做接口自动化测试吗?手把手教你完整Python接口自动化测!全网首发!附源码...

接口定义:

接口普遍有两种意思,一种是API(Application Program Interface),应用编程接口,它是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。而另外一种则是Interface,它是面向对象语言如java,c#等中一个规范,它可以实现多继承的功能。接口测试中的接口指的是API。

为什么要使用接口:

假如公司的产品前端开发还没开发完,接口开发好了。有天领导说,小王,你测下这个登录功能,要是你不懂接口的话就会对领导说这个功能测不了啊,页面没开发完。领导会把你!@¥@)¥!

接口测试是不需要看前端页面的,可以更早的介入到测试工作中,提高工作效率。

根据测试金字塔,越底层成本越低,一个底层的bug可能会引起上一层的多个bug,所以测试越底层,越能保证产品的质量,也越能节省测试的成本。而单元测试一般是由开发来完成的,所以对于测试来说,接口测试是非常必要的。

对于自动化测试来说,UI的变动性最大,所以UI自动化测试的维护成本很高。而接口的改动很小,所以接口自动化测试是最实用,最节约成本的。

2. 基本流程

接口功能自动化测试流程如下:

需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析

2.1 示例接口

手机号码归属地

接口地址:

http://apis.juhe.cn/mobile/get

返回格式:

json/xml

请求方式:

get

请求示例:

http://apis.juhe.cn/mobile/get?phone=手机号&key=您申请的KEY

3. 需求分析

需求分析是参考需求、设计等文档,在了解需求的基础上还需清楚内部的实现逻辑,并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。

如:手机号归属地接口,输入不同号码段的手机号,查看手机号归属和手机号码属于哪个运营商

4. 用例设计

5. 脚本开发

5.1 模块安装

使用pip命令安装即可:

pip install requests

5.2 接口调用

使用requests库,我们可以很方便的编写上述接口调用方法(如输入phone=手机号,示例代码如下):

在实际编写自动化测试脚本时,我们需要进行一些封装。

#!/usr/bin/python3

import unittest

import requests

import json

class Test_Moblie(unittest.TestCase):

# 封装公共的数据

def common(self, phone):

url = "http://apis.juhe.cn/mobile/get"

date = {

'key': "4391b7dd8213662798c3ac3da9f54ca8",

'phone': phone

}

self.response = requests.get(url, params=date)

return self.response

def test_1(self):

self.common("1857110")

print(self.response.text)

def test_2(self):

self.common("1868115")

print(self.response.text)

if __name__ == '__main__':

unittest.main()

我们按照测试用例设计,依次编写每个功能的自动化测试脚本即可。

5.3 结果校验

在手工测试接口的时候,我们需要通过接口返回的结果判断本次测试是否通过,自动化测试也是如此。

对于本次的接口,输入手机,我们需要判断返回的结果

resultcode是不是等于200结果分页时需要校验返回的结果数是否正确等。完整结果校验代码如下:

#!/usr/bin/python3

importunittestimportrequestsclassTest_Moblie(unittest.TestCase):#封装公共的数据

defcommon(self, phone):

url= "http://apis.juhe.cn/mobile/get"date={'key': "4391b7dd8213662798c3ac3da9f54ca8",'phone': phone

}

self.response= requests.get(url, params=date)returnself.responsedeftest_2(self):

self.common("1868115")print(self.response.json())

dict_2=self.response.json()#打印值省份值为:200

resultcode = dict_2["resultcode"]#为演式错误的示例,将对比值改为200,正确值为200,可自行修改

self.assertEqual(resultcode, "200", msg='失败原因:%s != %s' % (resultcode, "200"))if __name__ == '__main__':

unittest.main()

运行结果:

5.4 生成测试报告

用例执行完之后,那就需要发报告给领导。

那么我们使用HTMLTestRunner第3方模块插件生成html格式测试报告

fromunittest import TestSuitefromunittest import TestLoader

import requests

import json

import HTMLTestRunner

import unittestclassTest_Moblie(unittest.TestCase):

# 封装公共的数据

def common(self, phone):

url= "http://apis.juhe.cn/mobile/get"date={'key': "4391b7dd8213662798c3ac3da9f54ca8",'phone': phone

}

self.response= requests.get(url, params=date)returnself.response

def test_1(self):

"""判断状态码"""

self.common("1857110")

print(self.response.json())

# 返回数据为dict

print(type(self.response.json()))

dict_1=self.response.json()

# 打印值省份值为:湖北

province= dict_1["result"]["province"]

self.assertEqual(province,"湖北", msg='失败原因:%s != %s' % (province, "湖北"))

def test_2(self):

"""判断省份"""

self.common("1868115")

print(self.response.json())

dict_2=self.response.json()

# 打印值省份值为:湖北

resultcode= dict_2["resultcode"]

# 为演式错误的示例,将对比值改为201,正确值为200,可自行修改

self.assertEqual(resultcode,"201", msg='失败原因:%s != %s' % (resultcode, "200"))if __name__ == '__main__':

report= "E:/report_path/result.html"file= open(report,"wb")

# 创建测试套件

testsuit=unittest.TestSuite()

testload=unittest.TestLoader()

# 括号内传入的是类名,会自动找到以test开头全部的用例

# 用例以例表形式存储case =testload.loadTestsFromTestCase(Test_Moblie)

testsuit.addTests(case)

run= HTMLTestRunner.HTMLTestRunner(stream=file,

title="接口自动化测试报告",

description="用例执行结果")

run.run(testsuit)

file.close()

5.5发送邮件报告

测试完成之后,我们可以使用zmail模块提供的方法发送html格式测试报告

基本流程是读取测试报告 -> 添加邮件内容及附件 -> 连接邮件服务器 -> 发送邮件 -> 退出,示例代码如下:

#!/usr/bin/python3

importzmaildefsend_mail():#定义邮件

mail = {"subject": "接口测试报告",#任一填写

'content_text': '手机号归属地_API自动化测试报告',#任一填写

#多个附件使用列表

"attachments": "E:/report/result.html"}#自定义服务器

#如果不知道如何查看授权码,请查看这一篇博客:https://www.cnblogs.com/zzpython/p/13095749.html

server = zmail.server("发送人邮箱.com","QQ邮箱是用授权码",

smtp_host="smtp.qq.com",

smtp_port= 465)#发送邮件

server.send_mail("收件人QQ邮箱", mail)try:

send_mail()exceptFileNotFoundError:print("未找到文件")else:print("发送成功")

6. 结果分析

打开完成后生成的测试报告,可以看出本次测试共执行了2条测试用例,1条成功,1条失败

最终发送测试报告邮件,截图如下:

如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到902061117,群内会有不定期的分享测试资料。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值