引言 在测试用例的执行过程中,需要创建对象的临时目录/文件。 fixture提供了两个内置方法:
- 单文件操作【function级别】:tmpdir();
- 多文件操作【session级别】:tmpdir_factory();
这两个方法的执行过程:测试执行前创建临时目录/文件,测试执行后删除临时目录/文件。
1.临时目录概述
1.作用及处理流程
内置的tmpdir与tmpdir_factory负责,在测试执行前创建临时目录/文件,在测试执行后删除临时目录/文件。
2.tmpdir与tmpdir_factory的区别
区别点 | tmpdir | tmpdir_factory |
---|---|---|
作用范围 | function级别 | session级别 |
测试文件数量 | 单个 | 多个 |
说明 在执行命令的时候,结合“—setup-show参数”就能发现“tmpdir与tmpdir_factory的区别”
3.tmpdir与tmpdir_factory的常用方法
方法 | tmpdir | tmpdir_factory | 说明 |
---|---|---|---|
创建目录 | f=tmpdir.mkdir() | a_dir=tmpdir_factory.mktemp() - a_sub_dir=a_dir.mkdir() |
|
创建文件 | a_file=f.join(“hello.txt”) | a_file=a_sub_dir.join(“hello.txt”) | |
文件写入 | - a_file.write(数据内容) - with open() |
可以对任意文件进行“读写操作” | |
文件读取 | - a_file.read() - with open() |
||
返回会话的根目录 | NA(不支持) | base_temp=tmpdir_factory.getbasetemp() |
2.tmpdir的使用
@pytest.fixture()
def login1():
myCookie={"cookie1":"python"}
return myCookie
@pytest.fixture()
def login2(tmpdir,login1): # 引入fixture内置tmpdir方法及自定义fixture_login1
fDir=tmpdir.mkdir("myTempdir") # 创建目录
jsonFile=fDir.join("myJson.json") # 创建文件
# 将数据写入“临时文件myJson.json”
with open(jsonFile,'w',encoding='utf-8') as f:
json.dump(login1,f) # login1为自定义的fixture的返回值【json,dump()可以写入任意json数据】
return jsonFile # 返回:json文件
def test_hello2(login2): # 引入自定义fixture(login2),并读取json数据
with open(login2,'r') as f:
myJsonData = json.load(f)
print("--------------")
print("test2-myJsonData:\n", myJsonData)
3.tmpdir_factory的使用
import pytest, json
loginData = {"username": "admin",
"password": "test123456"}
#@pytest.fixture(scope="module")
@pytest.fixture(scope="session")
def wirteJson(tmpdir_factory):
fDir = tmpdir_factory.mktemp("myJsonDir").join("login.json") # 创建临时目录及文件
with open(fDir,'w', encoding='utf-8') as writeFlag:
json.dump(loginData,writeFlag) # 将指定的数据写入“临时文件中”
return fDir
#@pytest.fixture(scope="module")
@pytest.fixture(scope="session")
def readJson(wirteJson):
with open(wirteJson, 'r', encoding='utf-8') as readFlag:
jsonData = json.load(readFlag)
print("\n---------------------")
#print("read-json:\t", jsonData)
return jsonData
def test_hello2(readJson):
print("----------------------------------")
print("this is readJson:\t",readJson)
1.tmpdir_factory在其他范围使用
import pytest, json
loginData = {"username": "admin",
"password": "test123456"}
@pytest.fixture(scope="module")
#@pytest.fixture(scope="function")
#@pytest.fixture(scope="session")
def wirteJson(tmpdir_factory):
fDir = tmpdir_factory.mktemp("myJsonDir").join("login.json") # 创建临时目录及文件
with open(fDir,'w', encoding='utf-8') as writeFlag:
json.dump(loginData,writeFlag) # 将指定的数据写入“临时文件中”
return fDir
@pytest.fixture(scope="module")
#@pytest.fixture(scope="session")
#@pytest.fixture(scope="function")
def readJson(wirteJson):
with open(wirteJson, 'r', encoding='utf-8') as readFlag:
jsonData = json.load(readFlag)
print("\n---------------------")
#print("read-json:\t", jsonData)
return jsonData
def test_hello2(readJson):
print("----------------------------------")
print("this is readJson:\t",readJson)
def test_hello3(readJson):
print("----------------------------------")
print("this is readJson:\t",readJson)