Pytest知识整合小记(五、内置fixture)

一、tmpir和tmpdir_factory

一句话说明:

tmpir和tmpdir_factory负责在测试开始运行前创建临时文件目录,并在测试结束后删除。

区别:

tmpir:单个测试

tmpir_factory:多个测试

示例:

import pytest

def test_tmpdir(tmpdir):

a_file=tmpdir.join("mytest.txt")#创建临时文件

a_sub_dir=tmpdir.mkdir('anything')

another_file=a_sub_dir.join('somethinganother.txt')

a_file.write("123")#写数据

another_file.write("456")

print(a_file.read(),another_file.read())#读数据

if name == 'main':

pytest.main(["-v","-s","test_tmpdir.py"])#执行完后临时文件自动销毁

示例2:

多个文件使用时,使用tmpir_factory写在conftest.py里面,然后作为整体配置使用,比如说在做接口测试时候,可以用于配置共同的头文件等。

二、pytestconfig

一句话说明:

pytestconfig可以通过命令行参数、选项、配置文件、插件、运行目录等方式来控制pytest

也就是说,我们测试的配置参数可以单独写一个文件作为控制。

示例:

添加配置:

conftest.py

def pytest_addoption(parser):

parser.addoption("--myopt",action="store_true",help="测试配置选择")

parser.addoption("--foo",action="store",default='bar',help="测试")

使用配置:

def test_option(pytestconfig):

print('"foo"set to',pytestconfig.getoption('foo'))

print('我的设置为',pytestconfig.getoption('myopt'))

三、doctest

一句话说明:

doctest顾名思义就是文档测试,doctest实际上是python的标准模块,可以把函数下方的注释当成用例执行,也可以把模块的开头注释当成用例执行。

示例:

def multiply(a, b):

"""

fuction: 两个数相乘

>>> multiply(4, 3)

12

>>> multiply('a', 3)

'aaa'

"""

return a * b

if name == 'main':

import doctest

doctest.testmod(verbose=True)

四、cache

一句话说明:

cache的作用是存储一段测试会话的信息,在下一段测试会话中使用。

cache接口:

cache.get(key,default)

cache.set(key,value)

示例:

global key,result

def test_1_add(cache):

global key,result

result=1+2

key=''

cache.set(key,result)

print("测试相加的结果为:",cache.get(key,result))

return result

def test_2_multiply(cache):

global key,result



a=cache.get(key,result)

b=2

print(a)

print("测试相乘的结果为:",a * b)

return a * b

if name == 'main':

pytest.main(["-v","-s","test_tmpdir.py"])

执行结果:

test_tmpdir.py::test_1_add 测试相加的结果为:3

PASSED

test_tmpdir.py::test_2_multiply 测试相乘的结果为:6

PASSED

posted @ 2025-05-14 15:23  寻虫测试  阅读(10)  评论(0)    收藏  举报