接口测试框架实战与自动化进阶指南!
Posted 51Testing软件测试网
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试框架实战与自动化进阶指南!相关的知识,希望对你有一定的参考价值。
1、准备工作
a、本机已配置好Python 3.X开发环境。开发工具推荐PyCharm
b、安装requests库,命令:pip install requests。
c、准备好要测试接口的相关信息:请求url,header,body等。
本次测试使用的接口是使用Django框架开发的简单接口,header为空,不涉及cookie,实际的接口测试过程中header一般不为空。
2、编写接口测试代码
以post请求为例,测试代码如下:
1 #coding:utf-8
2 #导入request库
3 import requests
4 #请求URL
5 url = "http://127.0.0.1:8089/login/"
6 #请求数据
7 data = {
8 "username":"stephen",
9 "password":123456
10 }
11 #发送请求,一般还需要提供header信息,此处为demo,暂不关注
12 reponse1 = requests.post(url=url,data=data)
13 res_json = reponse1.json()
14 print(res_json)
15 flag = reponse1.status_code == 200 and res_json["status"] == 200 and res_json["msg"]=="login sucesss"
16 #假如http code为200,status为“200” msg为“login sucesss”则测试通过
17 if flag:
18 print("pass")
19 else:
20 print("fail")
运行结果:
以get接口为例,测试代码如下:
1 #coding:utf-8
2 #导入request库
3 import requests
4 #请求URL
5 url = "http://127.0.0.1:8089/login?username=vicent&tel=15209876533"
6 res = requests.get(url=url)
7 print(res.json())
运行结果:
3、优化
上面的代码虽然实现了接口自动化,但是代码不可复用。GET请求发送使用的是方法:requests.get,POST请求发送使用的是方法:requests.psot。
可以编写一个函数,传入请求的类型是GET,还是POST或者其它的类型。
1 #coding:utf-8
2 #导入request库
3 import requests
4 def http_run(method,url,data=None,headers=None):
5 if method == "GET":
6 res = requests.get(url=url,data=data,headers=headers)
7 else:
8 res = requests.post(url=url,data=data,headers=headers)
9 return res
10
11 #case1 psot
12 url = "http://127.0.0.1:8089/login/"
13 data = {
14 "username":"stephen",
15 "password":123456
16 }
17 #发送请求
18 res = http_run("POST",url=url,data=data)
19 #校验结果
20
21 assert res.json()["status"] == 200
22 #case2 get
23 #发送请求
24 url1 = "http://127.0.0.1:8089/login?username=vicent&tel=15209876533"
25 res1= http_run("GET",url=url1)
26 #校验结果
27 assert res1.json()["tel"] =="15209876533"
4、引入unittest单元测试框架管理用例
先将上面优化过的http_run方法,抽象成一个class,方便后续调用
1 import requests
2 class http_run:
3 def http_run(self,method,url,data=None,headers=None):
4 if method == "GET":
5 res = requests.get(url=url,data=data,headers=headers)
6 else:
7 res = requests.post(url=url,data=data,headers=headers)
8 return res
1 #导入unittest包
2 import unittest
3 #定义一个class http_test,继承于unittest.TestCase
4 class http_test(unittest.TestCase):
5 #在每个测试用例执行前运行的方法
6 def setUp(self):
7 print("run before test case")
8 #实例化 http_run
9 self.run = http_run()
10
11 #测试用例,必须以test开头
12 def test_get(self):
13 url1 = "http://127.0.0.1:8089/login?username=vicent&tel=15209876533"
14 res = self.run.http_run("GET",url1)
15 print(res.json())
16 self.assertEqual(res.json()["tel"],"15209876533")
17 def test_post(self):
18 url = "http://127.0.0.1:8089/login/"
19 data = {
20 "username":"stephen",
21 "password":123456
22 }
23 res = self.run.http_run("POST",url,data)
24 print(res.json())
25 self.assertEqual(res.json()["status"],200)
26 #在每个测试用例执行后运行的方法
27 def tearDown(self):
28 print("run after test case")
29 if __name__ == "__main__":
30 #创建测试套
31 suite = unittest.TestSuite()
32 #往测试套中添加用例
33 suite.addTest(http_test("test_get"))
34 suite.addTest(http_test("test_post"))
35 runner = unittest.TextTestRunner()
36 #运行测试用例
37 runner.run(suite)
运行结果:
unittest除了用于写单元测试外,还可以完成接口自动化,基于unittest可以完成接口自动化框架的开发。
点击阅读☞
点击阅读☞
点击阅读☞
点击阅读☞
点击阅读☞
上文内容不用于商业目的,如涉及知识产权问题,请联系小编(021-64471599-8017)。
以上是关于接口测试框架实战与自动化进阶指南!的主要内容,如果未能解决你的问题,请参考以下文章