一、如何用python+unittest实现接口测试自动化。
1、unittest实现接口测试自动化的流程是怎样的?
(1)如何获取测试接口信息?
答:a/从研发人员处获取,b/通过fiddler或charles或chrome的F12功能查看Network,并与研发人员确认后获取,
c/常见的接口测试文档格式
(2)如何解决case间依赖? 比如获取token
答:针对不同情况有不同处理方式。
a/仅是当前case的前置依赖,则写在当前case内
b/多个case的共同前置依赖,可写在公共方法中。则每次执行case时,仅需获取class中已经获取到前置。 比如登录用户token
缺点是,公共方法会被多次调用,接口访问频繁。
如下所示:
import unittest import requests """ 公共方法获取token """ host = ‘https://api.xxx.net‘ class CommonToken(unittest.TestCase): @classmethod def setUpClass(cls): print("setUpClass") @classmethod def tearDownClass(cls): print("tearDownClass") def commonToken(self): url = host + ‘/web_login‘ data = {‘phone‘: ‘12345678901‘, ‘pwd‘: ‘123456‘} headers = {‘Content-Type‘: ‘application/x-www-form-urlencoded‘} response = requests.post(url, data=data, headers=headers).json() token = response[‘data‘][‘token‘] return token def testUserDetail(self): url = host + ‘/user_info‘ access_token = self.commonToken() if access_token: data = {‘token‘: ‘%s‘ % (access_token)} response = requests.get(url, data=data).json() self.assertEqual(response[‘code‘], 0, ‘状态码错误‘) else: self.assertTrue(False, ‘未获取到Token‘) def testMyOrder(self): url = host + ‘/find_orders‘ access_token = self.commonToken() if access_token: data = {‘token‘: ‘%s‘ % (access_token)} response = requests.get(url, params=data).json() self.assertEqual(response[‘code‘], 0, ‘状态码错误‘) else: self.assertTrue(False, ‘未获取到Token‘) if __name__ == ‘__main__‘: unittest.main()
c/采用全局变量
代码与b/操作类似,只是access_token需要声明为global 。 即:
global access_token
d/【下策】按程序逻辑推算出每个接口的输入数据,单独执行接口测试,暂不考虑多个接口依赖的问题。
(3)如何使用断言?常用的断言方法有哪些?
答:每个case都需要执行断言,unittest通过执行case,判断case是否执行成功。
常用断言方法有:asserEqual(a,b,reason) --a/b是否相等
assertIsInstance(a,#dict/list#,reason) --a是否是字典或列表
assertGreater(a,b,reason) --a是否大于b
assertTrue(x,reason)--x是否为真
assertFalse(x,reason)--x是否为假
assertIsNotNone(x,reason)--x是否为None
(4)如何生成测试报告?HTMLTestRunner类
答:python3可通过HTMLTestRunner类实现生成html的自动化测试报告,使用方法如下:
a/在命令行中通过pip3 install html-testRunner下载
b/执行测试用例的case中,写:
import HtmlTestRunner
import unittest
f = open("output_fir + output_file",‘w‘)
runner = HtmlTestRunner.HTMLTestRunner("output_dir",descriptions="描述信息" ,verbosity=2)
runner.run()
(5)如何配合Jenkins使用?
答:a/登录官网下载安装包
b/在本地安装完成, 默认8080端口
下载war包时,需先安装java运行环境,命令行中执行java -jar jenkins.war -httpPort=8080
c/登录本地jenkins服务,http://localhost:8080,通过脚本修改时区。
d/解锁jenkins-安装插件-设置初始管理员账号和密码
c/创建project
d/system config中设置邮件通知协议和接收邮件和发送邮件方邮箱
e/设置定时任务,进入项目,并设置jenkins构建触发器build periodically 。 按****设置 H 5*** 每天的凌晨5点执行一次。
原文:https://www.cnblogs.com/xiaoxionghuihui/p/13993420.html