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

浙公网安备 33010602011771号