get \post 接口代码及断言编写
post 请求接口
import requests
import json
url_path = "http://www.baidu.com"
data = {"username":"mushishi","password":"1234"}
def send_post(url,data):
res = requests.post(url=url_path,data = data)
return res.json()#转换成json格式 send_post(url_path,data)#调用函数直接传入地址及参数
get 请求接口(把参数写在地址后面的写法)
url_path = "http://baidu.com?username=name&passwd=1234"
data = {}
def send_get(url):
#res = requests.get(url=url_path).json()#把参数写在地址后面的写法
return json.dump(res,indent = 2,sort_keys=True)#格式化输出
send_get(url_path)
get 请求接口
import requests
import json
url_path = "http://www.baidu.com"
data = {"username":"mushishi","password":"1234"}
def send_get(url,data):
res = requests.get(url=url_path,data = data)
return res.json()#转换成json格式 send_get(url_path,data)#调用函数直接传入地址及参数
把get 和post封装到一个方法,要使用哪个就调用哪个
import requests
import json def send_get(url,data):
res = requests.get(url,data).json()
return json.dump(res,index = 2,sorted_keys=True) def send_post(url,data):
res = requests.post(url,data).json()
return json.dumdp(res,index=2,sorted_keys=True) def run_main(url,method,data=None):#为了更好的使用get和post所以定data默认空值
res =None#先赋个空值,不管你调用哪个方法都会返回这个值
if method == "get"
res == send_get(url,data)
else:
res == send_post(url,data)
return res
if __name__=="main":
url = "http://www.baidu.com"
data ={"cart":"11"}#有参就传,没参就用默认的
run_main(url,"get",data)
run_main(url,"post",data)
run_main(url,"get")
get 和post 方法封装到类
import requests
import json
class RuanMain():
def __init__(self,url,method,data = None):
self.res = self.run_main(url,method,data) def send_get(self,url,data):
res = requests.get(url=url,data=data,).json()
return json.dump(res,index = 2,sorted_keys=True) def send_post(self,url,data):
res=requests.post(url=url,data=data).json()
return json.dump(res,index=2,sorted_keys=True)
if __name__=="__main__":
url = "http://www.baidu.com"
data={"cart:11"}
run=RuanMain(url,"get",data)
run.res
调用之前封装的runmain类方法进行写用例以及断言
import unittest
import runmain
class TestMethod1(unittest.TestCase):
@classmethod
def setUpClass(cls):#固定取名,不能随便取
print "类执行之前方法" @classmethod
def tearDownClass(cls):
print "类执行之后方法" def setUp(self):#在第一个测试方法执行之前都要先执行这个方法
run = runmain()
def tearDown(self):#每次执行之后都要执行这个方法
print "test--->tearDown"
def test_01(self):#每个测试用例都要以test开头,不然不会执行
url ="htpp://www.baidu.com"
data ={"name":"guo","passwd":"1234"}
run = runmain()
res = self.run.run_main(url,"post",data)
if res["errorCode"]==1001:#用自己的方法判断测试结果
print "测试通过"
else:
print "测试失败"
def test_02(self):#每个测试用例都要以test开头,不然不会执行
url = "http://www.baidu.com"
data = {"name":"guo","password":"123456"}
res = self.run.run_main(url,"get",data)
self.assertEqual(res["errorCode"],1000,"测试失败")#用python方法判断
if __name__=="__main__":
unittest.main()#执行所有测试用例
unittest 过滤执行的用例
import unittest
class _Baidu(unittest.TestCase):
#@unittest.skip("test_01")#执行的时候过滤掉这个
def test_01(self):
print "这是第一个用例"
def test_02(self):
print "这是第二个用"
def test_04(self):
print "这是第三个用例"
def test_03(self):
print "这是第四个用例"
if __name__=="__main__":
#unittest.main()#这是执行所有用例
suite = unittest.TestSuite()
suite.addTest(_Baidu("test_03"))#把需要执行的用例添加到套件去
suite.addTest(_Baidu("test_01"))
unittest.TextTestRunner().run(suite)#执行已添加好的测试套件
注:执行是按照,字母顺序和数字顺序
第一个接口的返回数据做为第二个接口的请求数据
import unittest
import runmain
class TestMethod1(unittest.TestCase):
def setUp(self):#在第一个测试方法执行之前都要先执行这个方法
self.run = runmain()
def tearDown(self):#每次执行之后都要执行这个方法
print "test--->tearDown"
def test_01(self):#每个测试用例都要以test开头,不然不会执行
url ="htpp://www.baidu.com"
data ={"name":"guo","passwd":"1234"}
res = self.run.run_main(url,"post",data)#调用runmain类的run_main方法
self.assertEqual(res["errorCode"],10001,"测试失败")
globals()["userid"]="1000909"#将userid设置为全局变量 def test_02(self):
print userid #前面设置了全局变量,这里可以直接应用,要用第一个接口的返回值做为第二个接口的请求参数
url = "http://ww.baidu.com"
data = {"name":"guo","password":"123456"}
res = self.run.run_main(url,"get",data)
self.assertEqual(res["errorCode"],1000,"测试失败")#用python方法判断 @unittest.skip("test_04")#设置需要跳过的用例
def test_04(self):
print "haha" def test_03(self):
print"jajaja"
if __name__=="__main__":
#unittest.main()#执行所有测试用例
suite = unittest.TestSuite()
注:设置一个全局变量,第二个接口可以直接使用
get \post 接口代码及断言编写的更多相关文章
- Java认证:JavaRunnable线程编写接口代码
Java认证:JavaRunnable线程编写接口代码.JavaRunnable线程如何才能更好的适应目前的编程环境呢?下面我们就看看如何才能更好的进行相关环境.希望下面的文章对大家有所帮助.Java ...
- 我的第一个python web开发框架(33)——接口代码重构
前面ORM模块我们已经完成了开发,接下来要做的就是对项目代码进行重构了.因为对底层数据库操作模块(db_helper.py)进行了改造,之前项目的接口代码全都跑不起来了. 在写ORM模块时,我们已经对 ...
- 基于swagger进行接口文档的编写
0. 前言 近期忙于和各个银行的代收接口联调,根据遇到的问题,对之前编写的接口进行了修改,需求收集和设计接口时想到了方方面面,生产环境下还是会遇到意想不到的问题,好在基本的执行逻辑已确定,因此只是对接 ...
- Jmeter接口之响应断言详解
响应断言 : 对服务器的响应进行断言校验 Apply to 应用范围: main sample and sub sample, main sample only , sub-sample only , ...
- 教你如何帮助前端同学快速生成API接口代码
最近我们团队开源的后端微服务框架go-zero增长势头比较迅猛,这篇文章我讲讲go-zero对前端团队的作用,并通过一个示例来给大家演示我们是怎么做的,希望能给后端的同学也可以帮助前端同学提高开发效率 ...
- php短信接口代码
这篇文章主要为大家详细介绍了php短信接口代码,php短信发送.php批量发送.php获取余额等代码,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了几个常用的php短信接口代码,供大家参考,具体内 ...
- Swagger结合mustache模板生成后台接口代码、以及前后台建模代码
之前项目中使用的的thrift来建模,维护前后台模型以及rest接口,前台使用的是angular2: 但是使用thrift只能生成建模,后台的rest接口的Controller文件还是需要手动去写,一 ...
- 面试突击(六)——JVM如何实现JAVA代码一次编写到处运行的?
声明:本文图片均来自网络,我只是进行了选择,利用一图胜千言的力量来帮助自己快速的回忆相关的知识点 JVM是 JAVA Virtual Machine 三个英文单词的首字母缩写,翻译成中文就是Java虚 ...
- 新西达电调初始化代码,使用nodejs ffi技术调用wiringpi,代码使用typescript编写
这是我设计的F450四轴飞行器飞控代码的一部分 运行在orangepi-zero上,操作系统是armbian,思路是使用node-ffi调用wiringpi的so库与GPIO通信,然后控制端逻辑代码使 ...
随机推荐
- tp5 跨域问题
只需要三行代码,写到入口文件public/index.php处即可解决 header("Access-Control-Allow-Origin:*"); header(" ...
- 《Machine Learning in Action》—— 懂的都懂,不懂的也能懂。非线性支持向量机
说在前面:前几天,公众号不是给大家推送了第二篇关于决策树的文章嘛.阅读过的读者应该会发现,在最后排版已经有点乱套了.真的很抱歉,也不知道咋回事,到了后期Markdown格式文件的内容就解析出现问题了, ...
- Flink处理函数实战之五:CoProcessFunction(双流处理)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 算法基础——KMP字符串匹配
原题链接 题目: 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字. 模板串P在模式串S中多次作为子串出现. 求出模板串P在模式串S中所有出现的位置的起始下标. 输入 ...
- nginx转发php文件到php-fpm服务器提示502错误
实验将php文件转发给另一个php-fpm服务器处理的时候,出现了502错误: 检查了nginx错误日志,提示: 2019/08/25 17:54:56 [error] 4742#0: *35 rec ...
- MGR(MySQL Group Replication)部署测试
1. 环境说明 192.168.11.131 mgr1 主节点 192.168.11.132 mgr2 从节点 192.168.11.133 mgr3 从节点 2. 在mgr1.mgr2.mgr3上安 ...
- 【VUE】7.Vuex基本使用
1. 安装Vuex npm install vuex --save 2. 导入Vuex包 import Vuex from 'vuex' Vue.use(Vuex) 3. 创建store对象 cons ...
- JUC并发工具包之CyclicBarrier & CountDownLatch的异同
1.介绍 本文我们将比较一下CyclicBarrier和CountDownLatch并了解两者的相似与不同. 2.两者是什么 当谈到并发,将这两者概念化的去解释两者是做什么的,这其实是一件很有挑战的事 ...
- P1163 银行贷款
考虑从一个月转移到下一个月.假设前一个月的欠款是 \(s\),月利息为 \(d\),月末还款为 \(b\),那么下一个月的欠款就是 \(s\left(1+d\right)-b\). 很容易看出月利息越 ...
- modelviewset与apiview
modelviewset(认证,权限,限流,序列化,分页,过滤,排序) 1.DRF初始化 1.认证(让用户登录) 2.权限(根据不同用户角色,可以操作不同的表) 3.限流(限制接口访问速度) 4.序列 ...