025python-怎么处理一个用例需要用到前面一条用例返回结果里面的某些值的依赖关系

这篇具有很好参考价值的文章主要介绍了025python-怎么处理一个用例需要用到前面一条用例返回结果里面的某些值的依赖关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如果一个用例需要用到前面一条用例返回结果里面的某些值,怎么处理这种依赖关系?



第一种:放到setup里面,每次请求时在setup里面重新请求前面一条用例



1、创建一个http_request请求测试类

import requests


# 创建一个http请求测试类
class HttpRequest:
    """利用requests封装get请求和post请求"""

    def http_request(self, deng_url, deng_data, method, cookie=None):  
        """url、data、cookie 参数化:
        url:请求的地址 http://xxxx:port
        param(参数):传递的参数,非必填参数,字典格式传递参数
        method:请求方式,支持get以及post请求
        cookie:请求的时候传递的cookie值"""

        # 登录,进行method判断
        if method.lower() == 'get':
        # 响应结果的消息实体
            deng_res = requests.get(deng_url, json=deng_data, cookies=cookie)  
        else:
        # 响应结果的消息实体
            deng_res = requests.post(deng_url, json=deng_data, cookies=cookie)
  
        # 返回一个消息实体
        return deng_res  


if __name__ == '__main__':
    # 创建登录实例
    deng_url = 'https://XXXXX'
    deng_data = {"email": "1851033XXX", "password": "XXXXX", "remember": "0", "code": "", "mobile": "",
                 "type": "login", "reqtimestamp": 1683648560588}
    deng_res = HttpRequest().http_request(deng_url, deng_data, 'post')
    print('登录结果是:', deng_res.json())
    # print('登录cookie是:', deng_res.cookies)

    # 聚合数据登陆后 查询,调用cookies
    query_url = 'https://XXX'
    query_data = {"isstudy": "1", "search": " ", "semester": "", "term": "", "reqtimestamp": 1683649384807}
    # 创建查询实例
    query_res = HttpRequest().http_request(query_url, query_data, 'get', deng_res.cookies)  # 如果接口没有参数,传{}字典,如:(query_url, {}, 'get', deng_res.cookies)
    print('查询结果是:', query_res.json())
2、创建一个测试用例类
import unittest

# 导入http_rquest请求
from class_unittest_012.class_exercise.class_http_request import HttpRequest


# 创建一个测试类
class TestKeTang(unittest.TestCase):

    # 初始化,属性可以被实例调用,可以被类函数里面调用
    def setUp(self):  
        # 登录
        self.deng_url = 'https://XXX'
        self.deng_data = {"email": "1851033XXXX", "password": "XXXXX"}
        # 查询
        self.query_url = 'https://XXX'
        # 获取登录后的cookies
        self.cookies = HttpRequest().http_request(self.deng_url, self.deng_data, 'get').cookies
        print('开始执行测试用例了!!!!!!')

    # 正常的账号密码登录
    def test_normal_login(self):  
        data = {"email": "18510336097", "password": "XXXXX"}
        deng_res = HttpRequest().http_request(self.deng_url, data, 'post')
        print(deng_res.json())
        try:
            self.assertEqual(10000, deng_res.json()['code'])
        except AttributeError as e:
            print('用例执行失败{0}!!!!!'.format(e))
            raise e


    # 查询
    def test_query_001(self):
        query_data = {"isstudy": "1", "search": "查询"}
        query_res = HttpRequest().http_request(self.query_url, query_data, 'get', self.cookies)
        print(query_res.json())
        try:
            self.assertEqual(20003, query_res.json()['code'])
        except AttributeError as e:
            print('用例执行失败{0}'.format(e))
            raise e


    def tearDown(self):
        print('用例执行完毕!!!!!')
3、执行测试用例,获取测试报告
import unittest
import HTMLTestRunnerNew
from class_unittest_012.class_exercise import 模块名
#存储用例,加载数据
suite = unittest.TestSuite()
# 创建一个加载测试用例的容器
loader = unittest.TestLoader()
# 从测试类里面加载测试用例
suite.addTest(loader.loadTestsFromModule(模块名))

# 上下文管理器
with open('test_kt_report.html', 'wb') as file:
    runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2, title='python“课堂派”单元测试报告',
                                              description='报告描述:自动化课堂派测试报告', tester='暖暖')
    runner.run(suite)
第二种:全局变量
 1、创建一个http_request请求测试类
import requests


# 创建一个http请求测试类
class HttpRequest:
    """利用requests封装get请求和post请求"""

    def http_request(self, deng_url, deng_data, method, cookie=None):  
        """url、data、cookie 参数化:
        url:请求的地址 http://xxxx:port
        param(参数):传递的参数,非必填参数,字典格式传递参数
        method:请求方式,支持get以及post请求
        cookie:请求的时候传递的cookie值"""

        # 登录,进行method判断
        if method.lower() == 'get':
        # 响应结果的消息实体
            deng_res = requests.get(deng_url, json=deng_data, cookies=cookie)  
        else:
        # 响应结果的消息实体
            deng_res = requests.post(deng_url, json=deng_data, cookies=cookie)
  
        # 返回一个消息实体
        return deng_res  


if __name__ == '__main__':
    # 创建登录实例
    deng_url = 'https://XXXXX'
    deng_data = {"email": "1851033XXX", "password": "XXXXX", "remember": "0", "code": "", "mobile": "",
                 "type": "login", "reqtimestamp": 1683648560588}
    deng_res = HttpRequest().http_request(deng_url, deng_data, 'post')
    print('登录结果是:', deng_res.json())
    # print('登录cookie是:', deng_res.cookies)

    # 聚合数据登陆后 查询,调用cookies
    query_url = 'https://XXX'
    query_data = {"isstudy": "1", "search": " ", "semester": "", "term": "", "reqtimestamp": 1683649384807}
    # 创建查询实例
    query_res = HttpRequest().http_request(query_url, query_data, 'get', deng_res.cookies)  # 如果接口没有参数,传{}字典,如:(query_url, {}, 'get', deng_res.cookies)
    print('查询结果是:', query_res.json())

2、创建测试用例类

import unittest

from class_unittest_012.class_exercise.class_http_request import HttpRequest

# 全局变量
COOKIE = None  


class TestKeTang(unittest.TestCase):

    # 初始化,属性可以被实例调用,可以被类函数里面调用
    def setUp(self):  
        # 登录
        self.deng_url = 'https://XXX'
        # 查询
        self.query_url = 'https://XXX'
        print('开始执行测试用例了!!!!!!')


    # 正常的账号密码登录
    def test_normal_login(self):  
        global COOKIE  # 声名全局变量
        data = {"email": "1851033XXXX", "password": "XXXXX"}
        deng_res = HttpRequest().http_request(self.deng_url, data, 'post')
        # 如果cookie有的话,那么就会更新COOKIE
        if deng_res.cookies:  
            COOKIE = deng_res.cookies
        print(deng_res.json())
        try:
            self.assertEqual(10000, deng_res.json()['code'])
        except AttributeError as e:
            print('用例执行失败{0}!!!!!'.format(e))
            raise e

    

    def test_query_001(self):
        global COOKIE
        query_data = {"isstudy": "1", "search": "查询"}
        query_res = HttpRequest().http_request(self.query_url, query_data, 'get', COOKIE)
        print(query_res.json())
        try:
            self.assertEqual(20003, query_res.json()['code'])
        except AttributeError as e:
            print('用例执行失败{0}'.format(e))
            raise e


    def tearDown(self):
        print('用例执行完毕!!!!!')
3、执行测试用例,获取测试报告
import unittest
import HTMLTestRunnerNew
from class_unittest_012.class_exercise import 模块名

suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(模块名))

with open('test_kt_report.html', 'wb') as file:
    runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2, title='python“课堂派”单元测试报告',
                                              description='报告描述:自动化课堂派测试报告', tester='暖暖')
    runner.run(suite)
第三种:利用反射方式(不强调)

1、学习反射内容

# 创建一个类
class GetData:
    Cookie = '小郭'


if __name__ == '__main__':
     # 打印出属性值
    print(GetData.Cookie) 

    # 可以直接将类里面的属性做修改
    setattr(GetData, 'Cookie', '小黄') 

    # 打印出修改后的属性值
    print(GetData.Cookie)  

    # 判断是否存在属性值
    print(hasattr(GetData, 'Cookie')) 

    # 获取属性值
    print(getattr(GetData, 'Cookie'))    

    # 删除属性值
    delattr(GetData, 'Cookie')           
 1、创建一个http_request请求测试类
import requests


# 创建一个http请求测试类
class HttpRequest:
    """利用requests封装get请求和post请求"""

    def http_request(self, deng_url, deng_data, method, cookie=None):  
        """url、data、cookie 参数化:
        url:请求的地址 http://xxxx:port
        param(参数):传递的参数,非必填参数,字典格式传递参数
        method:请求方式,支持get以及post请求
        cookie:请求的时候传递的cookie值"""

        # 登录,进行method判断
        if method.lower() == 'get':
        # 响应结果的消息实体
            deng_res = requests.get(deng_url, json=deng_data, cookies=cookie)  
        else:
        # 响应结果的消息实体
            deng_res = requests.post(deng_url, json=deng_data, cookies=cookie)
  
        # 返回一个消息实体
        return deng_res  


if __name__ == '__main__':
    # 创建登录实例
    deng_url = 'https://XXXXX'
    deng_data = {"email": "1851033XXX", "password": "XXXXX", "remember": "0", "code": "", "mobile": "",
                 "type": "login", "reqtimestamp": 1683648560588}
    deng_res = HttpRequest().http_request(deng_url, deng_data, 'post')
    print('登录结果是:', deng_res.json())
    # print('登录cookie是:', deng_res.cookies)

    # 聚合数据登陆后 查询,调用cookies
    query_url = 'https://XXX'
    query_data = {"isstudy": "1", "search": " ", "semester": "", "term": "", "reqtimestamp": 1683649384807}
    # 创建查询实例
    query_res = HttpRequest().http_request(query_url, query_data, 'get', deng_res.cookies)  # 如果接口没有参数,传{}字典,如:(query_url, {}, 'get', deng_res.cookies)
    print('查询结果是:', query_res.json())

2、创建一个反射类

class GetData:
    Cookie = None  # 存储cookie,初始值None

3、创建一个测试用例类

import unittest

from class_unittest_012.class_exercise.class_http_request import HttpRequest
#导入反射类
from class_013.class_get_data_demo.get_data import GetData  


class TestKeTang(unittest.TestCase):

    def setUp(self):  # 初始化,属性可以被实例调用,可以被类函数里面调用
        # 登录
        self.deng_url = 'https://XXX'
        # 查询
        self.query_url = 'https://XXX'
        print('开始执行测试用例了!!!!!!')

    def test_normal_login(self):  # 正常的账号密码
        data = {"email": "1851033XXXX", "password": "XXXXX"}
        deng_res = HttpRequest().http_request(self.deng_url, data, 'post')
        if deng_res.cookies:  # 如果cookie有的话,那么就会更新COOKIE,setattr()函数可以直接将类里面的属性做修改
            setattr(GetData, 'Cookie', deng_res.cookies)
        print(deng_res.json())
        try:
            self.assertEqual(10000, deng_res.json()['code'])
        except AttributeError as e:
            print('用例执行失败{0}!!!!!'.format(e))
            raise e


    def test_query_001(self):
        query_data = {"isstudy": "1", "search": "查询"}
        # getattr()函数,获取属性值
        query_res = HttpRequest().http_request(self.query_url, query_data, 'get', getattr(GetData, 'Cookie'))
        print(query_res.json())
        try:
            self.assertEqual(20003, query_res.json()['code'])
        except AttributeError as e:
            print('用例执行失败{0}'.format(e))
            raise e


    def tearDown(self):
        print('用例执行完毕!!!!!')

4、执行测试用例,获取报告文章来源地址https://www.toymoban.com/news/detail-445768.html

import unittest
import HTMLTestRunnerNew
from class_unittest_012.class_exercise import class_lei

suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromModule(class_lei))

with open('test_kt_report.html', 'wb') as file:
    runner = HTMLTestRunnerNew.HTMLTestRunner(stream=file, verbosity=2, title='python“课堂派”单元测试报告',
                                              description='报告描述:自动化课堂派测试报告', tester='暖暖')
    runner.run(suite)

到了这里,关于025python-怎么处理一个用例需要用到前面一条用例返回结果里面的某些值的依赖关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 科普一下:拍抖音需要什么设备,可能用到的设备合集

    大家好,我是@我赢助手短视频运营,抖音是现在最火的短视频平台之一,几乎每个人都在用它,抖音视频的发展离不开手机。 但你知道吗?手机拍摄有很多方面的限制,比如手持稳定程度、快门速度以及光圈大小等;再加上抖音是基于手机应用而产生的。想要拍摄好短视频

    2023年04月19日
    浏览(40)
  • 设计一款助听器可能需要用到以下音频算法

      设计一款助听器可能需要用到以下音频算法: 1 响度补偿算法:助听器可能需要根据用户的听力损失情况调整不同频率范围内的增益,以提供个性化的听力补偿。这可以通过基于用户配置或自适应算法的频率响应调整来实现。 2 噪声抑制:用于减少环境中的噪声干扰,使用

    2024年02月13日
    浏览(36)
  • Office显示未授权,需要激活这种情况应该怎么处理

    如图 1、先看自己的订阅是否已经到期 登录微软账户:https://account.microsoft.com/services 点击服务和订阅如下图所示 这种情况下说明目前用的office版本是高级版本,显示已过期 2、要想继续使用,先看账户有没有低版本不收费的,这里可以看到家庭和学生版本是可用的,但是电脑

    2024年02月13日
    浏览(47)
  • 微信商城小程序怎么制作?做一个小程序需要什么流程?

    小程序商城对商家有哪方面的帮助? 随着移动互联网的快速发展,小程序商城已经成为了越来越多商家的选择。那么,小程序商城到底对商家有哪些方面的帮助呢? 一、提高商家曝光度 在小程序平台上开设自己的小程序商城,可以让更多的用户了解到你的品牌和产品。而且

    2024年02月04日
    浏览(40)
  • 微信小程序怎么制作?制作一个微信小程序需要多少钱?

    随着移动互联网的快速发展,微信小程序已成为连接用户与服务的重要桥梁。它以其便捷性和易用性,为各类企业和个人提供了一个全新的展示和交易平台。那么,如何制作一个微信小程序?又需要投入多少资金呢?本文将为您提供全面的解答。 制作微信小程序的步骤 1 、准

    2024年04月10日
    浏览(55)
  • 【linux命令讲解大全】025.mtools - 一个强大的MS-DOS文件系统工具

    显示mtools支持的指令 补充说明 mtools 命令用于显示mtools支持的指令。 mtools 是一个模拟MS-DOS文件系统的工具程序,可以执行许多与MS-DOS相关的操作。这些指令都是 mtools 的符号连接(symbolic links),因此它们具有一些共同的特性。 语法 选项 -a :当遇到长文件名重复时,自动更

    2024年02月11日
    浏览(41)
  • 【状态管理|概述】Flink的状态管理:为什么需要state、怎么保存state、对于state过大怎么处理

    按照数据的划分和扩张方式,Flink中大致分为2类: Keyed States:记录每个Key对应的状态值 因为一个任务的并行度有多少,就会有多少个子任务,当key的范围大于并行度时,就会出现一个subTask上可能包含多个Key(),但不同Task上不会出现相同的Key(解决了shuffle的问题?)   常

    2024年02月01日
    浏览(56)
  • pyqt怎么让窗口显示在最前面

    可以使用 PyQt 的 setWindowFlag() 函数来设置窗口的 \\\"AlwaysOnTop\\\" 标志。这样就可以让窗口始终显示在最前面了。 下面是一个例子: 注意,这个方法并不是在所有系统上都有效,有些系统可能会忽略这个标志。如果想要实现在所有系统上都能让窗口显示在最前面,可以使用 PyQt 的

    2024年02月15日
    浏览(44)
  • mysql获取第一个逗号前面的字符串

    字符串内容如下: 想获取,第一个逗号前面的字符串,即:统编版(2019) 需要第一获取逗号的下标位置,然后再截取字符串 获取逗号的函数使用:LOCATE 结果如下:  然后使用 left 函数截取字符串,代码如下: 结果如下: 统编版(2019)

    2024年02月13日
    浏览(42)
  • 统计数据集中目标大、中、小个数【需要用到yolo的txt标注文件数据,其他格式数据不一定适用】

    统计数据集中目标大、中、小个数 最近看到一篇论文,其中在数据集介绍部分统计了大、中、小目标信息。因此,为了获取数据集的统计信息,我参考了作者写的代码基于tensorpack统计coco数据集中大、中、小目标的数量 精简版代码如下(内有多个参数需要修改,仔细查看注释

    2024年02月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包