首页 > 其他分享 >pytest中如果fixture想用自动化用例过程中产生的数据,怎么办?

pytest中如果fixture想用自动化用例过程中产生的数据,怎么办?

时间:2022-12-02 01:11:22浏览次数:36  
标签:fixture cache request module 用例 pytest test

背景

往往在测试过程中,数据是在自动化用例执行之后才生成的,并非一开始就知道,又想在用例结束的时候清理掉这些中间数据,该怎么办?

思路

之前解决的办法是使用cache来解决的:

conftest.py:

import pytest

@pytest.fixture()
def myfixture(cache):
    yield
    res = cache.get('a', 'conftest-a')   # cache.get需要放到yield之后,先等用例执行cache.set才能cache.get
    print(res)

test_1.py:

def test_a(cache, myfixture):
    cache.set('a', '123')
    assert False

使用cache对fixture作用域有要求,反正函数级别的可以正常使用。

最近有看到了一个request.module,以下代码是是官方用例修改后

# content of conftest.py
import pytest


@pytest.fixture(scope="module")
def smtp_connection(request):
    server = getattr(request.module, "smtpserver", "smtp.gmail.com")
    print('request.module============='+server)
    yield
    server = getattr(request.module, "smtpserver", "smtp.gmail.com")
    print('request.module============='+server)

创建一个测试用例py

# content of test_anothersmtp.py

smtpserver = "mail.python.org"  # will be read by smtp fixture


def test_showhelo(smtp_connection):
    smtpserver = 'uniontech.com'
    print('正在执行用例ing=============')
    assert smtpserver

我们来看一下输出结果:

============================= test session starts =============================
collecting ... collected 1 item

test_1.py::test_showhelo 

request.module=============mail.python.org
PASSED                                          [100%]

正在执行用例ing=============


request.module=============uniontech.com


============================== 1 passed in 0.01s ==============================

Process finished with exit code 0



可以看到conftest打印了两次smtpserver,在执行用例之前打印的是默认值mail.python.org,在执行用例结束后打印了用例中途修改后的值uniontech.com也可以实现将用例中的数据传给fixture

总结

cacherequest.module针对以上问题均可以解决,但是cache还可以解决两个用例之前共同用数据问题(一般不建议这样用,但是总有非必要的时候),request.module就需要你在fixture中使用,有一定的限制。

标签:fixture,cache,request,module,用例,pytest,test
From: https://www.cnblogs.com/tarzen213/p/16943255.html

相关文章

  • 学习pytest看到一句话记录一下:
    测试分为四个步骤:1.Arrange2.Act3.Assert4.CleanupArrange安排是我们为考试做准备。Act启动。这一行为实现了被测系统(SUT)状态的改变,也是我们可以查看的改变......
  • 测试工作中的测试用例设计
    测试工作中的测试用例设计测试工作的最核心的模块,在执行任何测试之前,首先必须完成测试用例的编写。测试用例是指导你执行测试,帮助证明软件功能或发现软件缺陷的一种......
  • Pytest - 使用pytest-xdsit 插件运行后 logging 模块日志不会输出的问题
    背景:自己写的日志打印模块,用pytest-n=auto后日志就不会输出#tools.set_loggging.pyimportlogging.handlersimportsysfromconcurrent_log_handlerimportConc......
  • pytest + loguru + allure 生成的报告没有log信息
    背景前段时间一直认为loguru这个库很不错,并且应用到了项目中,生成的日志文件也非常好看但是最后的allure报告中和html报告中都没有log信息。然就是各种查查:loguru作者说l......
  • UML——用例图
    下图是一个再简单不过的用例图用例图主要就是由上面一个小人一个椭圆还有箭头组成的看起来还蛮好看滴那么它是用来干嘛滴捏小人跟椭圆又分别代表啥捏看完下面你就知......
  • pytest + yaml 框架 -6.hooks 钩子功能实现
    前言在发送请求的时候,我们希望在发送请求参数前,带上签名的值,或者返回的内容需要二次处理,解密后返回。此功能我们可以用hooks钩子来实现pip安装插件pipinstallpyte......
  • 产品需求文档写作方法(三)用例文档(UML用例图、流程图)
    在产品和技术领域里都有UML的技能知识,而对于产品人员的UML则更多的是指用例图,也就是我所称呼的用户流程图。在讲PRD文档写作的第二篇文章里,我提到了用户流程图的制作,实际上......
  • pytest + excel参数驱动
    背景最近紧急支持一个接口测试,打算把接口的参数都放到execl中维护,且一个接口需要请求两次。思路1.execl中构造参数接口需要请求两次或者多次,比较两次后台返回的结果,那......
  • Pytest接口测试框架实战项目搭建(五)—— Streamlit首次应用
    一、源码,c_page.py'''@Date:2022/11/1414:36@Author:一加一'''importstreamlitasstimportosimportsysBASE_DIR=os.path.dirname(os.path.dirname(os.pa......
  • 开发人员为什么要写测试用例?
    作为一名开发人员,你可能会发现周围的开发并不太喜欢写测试用例,甚至有些同学根本不写测试用例,认为写测试用例完全是浪费时间,或者是测试用例只是测试的事情。在开发过程中,往......