unittest(7)-作业- 全局变量传递cookie
全局变量存储cookie
测试类中有多个测试函数
# 1.http_requset.py
import requests
class HttpRequest:
def http_request(self, url, method, data=None, cookie=None):
try:
if method.upper() == "GET":
res = requests.get(url, data, cookies=cookie)
elif method.upper() == "POST":
res = requests.post(url, data, cookies=cookie)
else:
print("请输入正确的参数")
except Exception as e:
print("请求报错了:{}".format(e))
raise e
return res
if __name__ == '__main__':
# 登录
login_url = "http://v.rainbowred.com/login"
login_data = {"username": "15546355872",
"password": "123456",
"rememberCheck": "1",
"loginStatus": "1",
"rememberStatus": "1",
"autoLogin": "0",
"language": "zh"}
login_res = HttpRequest().http_request(login_url, "post", login_data)
print(login_res.json())
# 选择公司
c_url = "http://v.rainbowred.com/chc"
c_data = {"companyId": "21"}
c_res = HttpRequest().http_request(c_url, "post", c_data, cookie=login_res.cookies)
print(c_res.json())
# 2.test_login.py
import unittest
from API_AUTO.tools.http_request import HttpRequest
COOKIE = None # 全局变量
"""
1.登录接口:4个用例
正确登录、不输入账号、不输入密码、错误账号、错误密码
2.充值接口:
正常充值、不输入账号、不输入金额、充值错误的金额负数
"""
class TestLogin(unittest.TestCase):
def setUp(self):
print("开始执行用例")
# 登录URL和考勤URL,这个地方的URL和data是写死的值,所以不用在setUp中传参
self.loin_url = "https://www.ketangpai.com/UserApi/login"
self.kq_url = "https://www.ketangpai.com/SummaryApi/attence?courseid=MDAwMDAwMDAwOcqZWH37Np"
def tearDown(self):
print("用例执行完毕")
def test_success(self):
global COOKIE
data = {"email": "1255811581@qq.com", "password": "huahua90!@", "remember": 0}
res = HttpRequest().http_request(self.loin_url, "post", data)
r = res.json()["info"]
print("1正常登录结果是", r)
if res.cookies: # 如果res.cookies有值,就更新全局变量COOKIE的值
COOKIE = res.cookies
try:
self.assertEqual(r, "success")
except AssertionError as e:
print("test_success's error is {}".format(e))
raise e # 处理了异常后再抛出去
def test_account(self):
data2 = {"email": "", "password": "huahua90!@", "remember": 0}
res = HttpRequest().http_request(self.loin_url, "post", data2)
r = res.json()["info"]
print("2空用户名登录结果是", r)
try:
self.assertEqual(r, "用户名不能为空")
except AssertionError as e:
print("test_account's error is {}".format(e))
raise e
def test_pwd(self):
data3 = {"email": "1255811581@qq.com", "password": "", "remember": 0}
res = HttpRequest().http_request(self.loin_url, "post", data3)
r = res.json()["info"]
print("3空密码登录结果是", r)
try:
self.assertEqual(r, "密码不能为空")
except AssertionError as e:
print("test_pwd's error is {}".format(e))
raise e
def test_waccount(self):
data4 = {"email": "12558115810@qq.com", "password": "huahua90!@", "remember": 0}
res = HttpRequest().http_request(self.loin_url, "post", data4)
r = res.json()["info"]
print("4错误用户名登录结果是", r)
try:
self.assertEqual(r, "用户不存在")
except AssertionError as e:
print("test_waccount's error is {}".format(e))
raise e
def test_wpwd(self):
data5 = {"email": "1255811581@qq.com", "password": "huahua90!@111", "remember": 0}
res = HttpRequest().http_request(self.loin_url, "post", data5)
r = res.json()["info"]
print("5错误密码登录结果是", r)
try:
self.assertEqual(r, "密码错误,你不能再尝试了", "这个用例会失败")
except AssertionError as e:
print("test_wpwd's error is {}".format(e))
raise e
def test_kq(self):
global COOKIE
data = {}
res = HttpRequest().http_request(self.kq_url, "get", data, COOKIE)
# r = res.json()
print("6考勤记录是", res)
if __name__ == "__main__":
unittest.main()
unittest(7)-作业- 全局变量传递cookie的更多相关文章
- chap4-关联接口测试-通过全局变量传递cookie
# 1 http_request.py import requests class HttpRequest: def http_request(self, url, method, data=None ...
- Jmeter中传递cookie值
场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢? 在线程组下面之直接添加HTTP Cook ...
- Jmeter跨线程组传递cookie,以禅道系统为例;BeanShell的存取数据的使用
先看下脚本结构: 思路:将登陆请求放在setUp Thread Group中:把登陆后的cookie通过正则提取出来,然后存为全局变量,传递到下一个线程组中: 第一步:添加setUp Thread G ...
- 使用curl传递cookie错误的问题
工作中发现一个问题, 通过curl调用接口传递cookie操作用户的数据, 接口的程序解析不了cookie中的数据. 经过排查发现curl发送的cookie数据为 TZ+Gn+rEk+6G4d 而接口 ...
- Android 使用全局变量传递数据
使用全局变量传递数据,所谓的全局变量类似于jee开发中的application变量.申明后,全局调用.只有当内存被清理后,才被销毁.否则一直可以调用. 还是使用点击一个button,传递一个数据到另一 ...
- node下的跨域传递cookie
研究背景: 最近有一位朋友找工作,需要面试,涉及到面试就涉及面试题,于是我想起来鄙人之前面试被问到的一个跨域传递cookie的问题.搜索了相关资料,但自己不敲一下肯定是不足以让人信服的. 我用node ...
- activity之间通过全局变量传递数据
activity之间通过全局变量传递数据 一.简介 Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉 ...
- 如何从桌面程序向浏览器传递cookie或自定义header
类似问题 从c#程序启动ie并传递cookie 打开默认浏览器并传递cookie 打开一个web浏览器使用c#应用程序并添加请求头 猜想 从wpf程序打开默认浏览器并定位到一个url ,并且向这个ur ...
- requests接口自动化9-共享session和传递cookie
前言: session:用requests.session()创建会话,可以将会话信息传递给其他接口 cookie:用RequestsCookieJar或者cookie字典传递cookie信息 fil ...
随机推荐
- 编程作业2.2:Regularized Logistic regression
题目 在本部分的练习中,您将使用正则化的Logistic回归模型来预测一个制造工厂的微芯片是否通过质量保证(QA),在QA过程中,每个芯片都会经过各种测试来保证它可以正常运行.假设你是这个工厂的产品经 ...
- js分页的一些思考
一两年之前在写java的时候,分页的逻辑是写在后端的,用java去实现,jsp是动态展示页码和数据.但是对于一个用ajax加载的分页数据来说,分页的逻辑必须也在前端完成,那么就不得不去思考一下在js里 ...
- drf序列化和反序列化
目录 drf序列化和反序列化 一.自定义序列化 1.1 设置国际化 二.通过视图类的序列化和反序列化 三.ModelSerializer类实现序列化和反序列化 drf序列化和反序列化 一.自定义序列化 ...
- 浮动( Floats )
浮动( Float )概述 浮动和文字环绕 浮动框就是一个框在当前行被向左或向右挪动(偏移),它不在常规流中,浮动框由浮动元素的框组成. 浮动框( 'float', 'floated' or 'flo ...
- drf框架的解析模块-异常处理模块-响应模块-序列化模块
解析模块 为什么要配置解析模块 (1).drf给我们通过了多种解析数据包方式的解析类. (2).我们可以通过配置来控制前台提交的那些格式的数据台解析,那些数据不解析. (3).全局配置就是针对一个视图 ...
- 两种访问接口的方式(get和post)
跨机器.跨语言的远程访问形式一共有三种:scoket发送数据包.http发送请求.rmi远程连接: http发送请求方式:分为post和get两种方式 importjava.io.IOExceptio ...
- log4j中%5p的含义
因为日志级别分别有error,warn,info,debug,fatal5种,有些是5个字母的,有些是4个字母的,如果直接写%p就会对不齐,%-5p的意思是日志级别输出左对齐,右边以空格填充,%5p的 ...
- ubuntu或者raspbian清理软件使用痕迹
拿最常用的nginx举例 删除nginx–purge包括配置文件 sudo apt-get --purge remove nginx 开始使用上面这条,后来发现还是有很多相关联没有删除 首先需要停止n ...
- 29)PHP,自动加载类
(1)作用: 类的自动加载是指,在外面的页面中,并不需要去“引入”(包含)类文件,但是程序会在需要一个类的时候就自动去“动态加载”该类. (2)什么叫做“需要一个类”?通常是这样的情况: 1,创建一个 ...
- git理论知识
1.Git 有三种状态,你的文件可能处于其中之一:已提交(committed).已修改(modified)和已暂存(staged) 由此引入 Git 项目的三个工作区域的概念:Git 仓库.工作目录以 ...