全局变量存储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的更多相关文章

  1. chap4-关联接口测试-通过全局变量传递cookie

    # 1 http_request.py import requests class HttpRequest: def http_request(self, url, method, data=None ...

  2. Jmeter中传递cookie值

    场景:用户登陆后会本地会保存cookie,cookie是用来跟服务端验证此用户已经登陆过的重要信息,但是如何获取并在其他请求时将此cookie传递给服务器呢? 在线程组下面之直接添加HTTP Cook ...

  3. Jmeter跨线程组传递cookie,以禅道系统为例;BeanShell的存取数据的使用

    先看下脚本结构: 思路:将登陆请求放在setUp Thread Group中:把登陆后的cookie通过正则提取出来,然后存为全局变量,传递到下一个线程组中: 第一步:添加setUp Thread G ...

  4. 使用curl传递cookie错误的问题

    工作中发现一个问题, 通过curl调用接口传递cookie操作用户的数据, 接口的程序解析不了cookie中的数据. 经过排查发现curl发送的cookie数据为 TZ+Gn+rEk+6G4d 而接口 ...

  5. Android 使用全局变量传递数据

    使用全局变量传递数据,所谓的全局变量类似于jee开发中的application变量.申明后,全局调用.只有当内存被清理后,才被销毁.否则一直可以调用. 还是使用点击一个button,传递一个数据到另一 ...

  6. node下的跨域传递cookie

    研究背景: 最近有一位朋友找工作,需要面试,涉及到面试就涉及面试题,于是我想起来鄙人之前面试被问到的一个跨域传递cookie的问题.搜索了相关资料,但自己不敲一下肯定是不足以让人信服的. 我用node ...

  7. activity之间通过全局变量传递数据

    activity之间通过全局变量传递数据 一.简介 Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉 ...

  8. 如何从桌面程序向浏览器传递cookie或自定义header

    类似问题 从c#程序启动ie并传递cookie 打开默认浏览器并传递cookie 打开一个web浏览器使用c#应用程序并添加请求头 猜想 从wpf程序打开默认浏览器并定位到一个url ,并且向这个ur ...

  9. requests接口自动化9-共享session和传递cookie

    前言: session:用requests.session()创建会话,可以将会话信息传递给其他接口 cookie:用RequestsCookieJar或者cookie字典传递cookie信息 fil ...

随机推荐

  1. 吴裕雄--天生自然 JAVA开发学习:StringBuffer、数组

    public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(& ...

  2. python学习笔记_集合的定义和常用方法

    1.认识集合 定义: s={1,2,3,4,5} s=set("hello") s=set(["steven","job","da ...

  3. Chrome使用频率最高的快捷键

    标签 ctrl+T 打开新标签  ——— ctrl+W 关闭标签 ctrl+shift+T 打开上衣个被关闭的标签 ctrl+tab 标签向右切换 —— ctrl+shift+tab 标签向左切换 c ...

  4. RE数组开多大?

    #include<iostream> using namespace std; ][]; int main() { int n, m; ; i <= ; i++) { a[][i] ...

  5. Java基础篇 - 强引用、弱引用、软引用和虚引用

    Java基础篇 - 强引用.弱引用.软引用和虚引用 原创零壹技术栈 最后发布于2018-09-09 08:58:21 阅读数 4936 收藏展开前言Java执行GC判断对象是否存活有两种方式其中一种是 ...

  6. typescript-学习使用ts-3

    函数 函数参数 参数及返回值类型 function add(x: number, y: number): number { return x + y } 可选参数 function add(x: nu ...

  7. stopping service [tomcat],服务未启动

    1. 在主类中添加日志打印,查看错误: 2. 我的错误是因为两个controller含有相同的路径

  8. ubuntu16.04设置apt 阿里源

    sudo gedit /etc/apt/sources.listdeb http://mirrors.aliyun.com/ubuntu/ trusty main restricted univers ...

  9. MonkeyScript常用命令及Uiautomatorview问题解决

    一.MonkeyScript执行脚本的命令 adb shell monkey -f <scriptfile><event-count> 1.Dispatch Trackball ...

  10. inotify+rsync实时同步

    主服务器上安装inotify和rsync,备用服务器上安装rsync 主服务器上修改/etc/rsyncd.conf配置文件 三. 创建密码文件,防火墙设置,客户端和服务器端都要做如下操作 echo ...