Javascript 如何使用模块';财政司司长';在柏树里?
我想从本地存储库导入JSON数据Javascript 如何使用模块';财政司司长';在柏树里?,javascript,node.js,cypress,Javascript,Node.js,Cypress,我想从本地存储库导入JSON数据 var fs = require('fs'); var data = fs.readFileSync('./profile.json', 'utf8'); console.log(data); ... 但是,Cypress会出现以下错误: 这是我的cypress项目中的package.json { "name": "cypress_test", "version": "1.0.0
var fs = require('fs');
var data = fs.readFileSync('./profile.json', 'utf8');
console.log(data);
...
但是,Cypress会出现以下错误:
这是我的cypress项目中的package.json
{
"name": "cypress_test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "npx cypress run",
"clean-reports": "rm -rf cypress/reports",
"merge-report": "npx mochawesome-merge --reportDir cypress/reports/separate-reports cypress/reports/full_report.json",
"generate-report": "npx mochawesome-report-generator --reportDir cypress/reports cypress/reports/full_report.json",
"after:tests": "npm run merge-report; npm run generate-report",
"cypress": "npm run clean-reports; npm run test; npm run after:tests"
},
"keywords": [],
"type": "module",
"author": "",
"license": "ISC",
"dependencies": {
"@cypress/webpack-preprocessor": "^5.4.1",
"cypress": "^4.11.0",
"fs": "0.0.1-security",
"mocha": "5.2.0",
"mochawesome": "4.1.0",
"mochawesome-merge": "2.0.1",
"mochawesome-report-generator": "4.0.1",
"papaparse": "^5.2.0",
"selenium-webdriver": "^4.0.0-alpha.7",
"xlsx": "^0.16.4"
},
"devDependencies": {
"@babel/core": "^7.11.0",
"@babel/preset-env": "^7.11.0",
"babel-loader": "^8.1.0",
"webpack": "^4.44.1"
}
}
我不想使用cy.fixture,因为我需要在“it测试描述”中使用来自json的数据。例如,我想做这样的测试
it (datas.data, ()=>{
...
})
您应该能够使用require语句加载
profile.json
const data = require('profile.json');
谢谢你的回答!我尝试了'require'(var file='profile.json'const data=require('./'+file)),但显然'require'不支持字符串变量。通过使用switch条件语句,我想我可以动态导入Json,但这有点愚蠢。@loone96
require('./'+file)
在node.js中是有效的语法,应该可以工作。它始终从相对路径对meShouldrequire()
有效,否则它将在节点模块中查找。如果要在Cypress测试中使用节点命令,如fs.readFileSync
,则必须将它们放入任务中,请参阅中的第一个示例。但为什么不使用cy.fixture()
?同意@MarionMorrison,为什么不在这里使用fixture?@MarionMorrison据我所知,fixture的数据只能在测试区域访问(它,指定)。我想在每个测试的标题中使用数据。例如,它('this test is'+data.test_name,()=>…)。您可以在规范顶部的before()
中运行cy.fixture()
。另外,区别在于cy.fixture()
将JSON解析为一个对象,但cy.readFile()
将以字符串形式提供文件内容(与fs.readFileSync()相同)
如果在任务中使用)。