测开笔记--Typescript: 文件复制到指定目录
开发背景:
自动化开发语言使用的是TypeScript;框架用的是playwright。有个测试脚本需要先将几个文件复制粘贴到新建的项目文件夹下,系统会读取该文件,然后生成页面信息。
关键字:文件复制粘贴; 新建的项目文件夹。
面临的文件:
1. 文件的复制粘贴应该使用什么方法
2. 动态的文件夹路径应该如何获取。
解决方案:
1. 文件的组织粘贴,使用的是fs库、path库。首先生成fs、path库的对象。这两个库属于默认就存在的文件,不需要再导入了【我印象是,如果有问题评论区反馈吧】
public fs = require("fs")
public path = require("path")
然后生成源文件的文件路径,路径分成2部分:文件夹 + 文件名。定义两个名称:
public rootPath: string = "../../test/path/"
public fileName: string = "test.txt"
补充说明: “../../”这个是文件夹相对于类文件的路径。可以认为是回退几个文件夹。不理解的可以查查文件夹相对路径相关的内容或者评论区提问。
然后使用path库下的join方法,可以将两个路径拼接成一个路径:
let rootFilePath = this.path.join(this.rootPath, this.fileName)
这样就得到了源文件的路径。
同理获取目标文件路径。但是由于目标文件是动态获取的,已知获取的位置为用户目录的Document文件夹下。
这里使用process.env.USERPROFILE来定位用户目录,完整代码如下:
文件夹路径:
let targetPath: string = process.env.USERPROFILE + "\\Documents\\Test\\"
生成的目标文件路径:
let targetFilePath: string = this.path.join(this.targetPath, this.fileName)
2. 生成了两个路径后,使用fs库下的copyFile方法,可以将源文件复制到目标文件
this.fs.copyFile(this.path.resolve(__dirname, rootFilePath), targetFilePath, (err) => {
if(erro) throw err;
})
回顾下:自动化测试过程中针对文件的处理不常见,所以一开始面临这种问题的时候,需要查询下对应开发语言对于文件、文件夹、文件操作的库和方法,然后针对性的使用,因为比较少见,所以以笔记的形式记录一下。
完整代码如下:
class projectHelper{
public rootPath: string = "../../test/path"
public targetPath: string = this.path.join(this.targetPath, this.fileName)
public fileName: string = "test.txt"
public fs = require('fs')
public path = require("path")
async copyPathFile(){
this.targetFilePath = this.path.join(this.targetPath, this.fileName)
this.rootFilePath = this.path.join(this.rootPath, this.fileName)
this.fa.copyFile(this.path.resolve(__dirname, jsonFileRootPath), jsonFileTargetPath, (err) => {
if(err) throw err;
})
}
}