以下是我拥有的三个基于国家/地区的网站-
在我的代码中,所有3个站点都使用相同的代码库并基于国家(uk
| fr
| ie
),我正在传递一些默认配置,例如特定于国家/地区的文本以及某些功能启用/禁用开关等到内页。
在我的柏树中,我像-
一样创建了fixtures
/灯具-
/uk
-uk-config.json
/fr
-fr-config.json
/ie
-ie-config.json
我被integration
文件夹中的文件夹结构所困扰,并且不知道推荐的方法。请帮助我。
选项1-
/集成-
/uk
-homepage.spec.js
-plp.spec.js
-pdp.spec.js
-cart.spec.js
/fr
-homepage.spec.js
-plp.spec.js
-pdp.spec.js
-cart.spec.js
/ie
-homepage.spec.js
-plp.spec.js
-pdp.spec.js
-cart.spec.js
此方法存在的问题-尽管此代码在各个国家/地区之间更加隔离,但是这里有很多重复的代码,并且在我们开设其他国家/地区商店时会不断增加。
选项2-
/集成-
-homepage.spec.js
-plp.spec.js
-pdp.spec.js
-cart.spec.js
在此通行证中,来自灯具的国家/地区特定配置。 TBH,我不知道该如何管理,如果有人发现这是一种更好的方法,并且可以提供一些指向此方法的指示,那将真的很有帮助。
答案 0 :(得分:0)
问题:
如果我清楚地理解了您的问题,那么您想运行同一组测试,但针对不同的国家/地区,并且您在阅读时遇到了问题,那么该套件就存在一个问题。如果只是为了测试同一组测试而增加了太多的国家,则测试结果会增加。对吗?
解决方案:
您可以在命令行中将COUNTRY
变量作为节点env变量传递,并将其分配为Cypress env变量并在测试中读取它。
"test": "COUNTRY=$COUNTRY ./node_modules/.bin/cypress open --env COUNTRY=$COUNTRY"
您的运行命令应如下所示
COUNTRY=fr npm run test
COUNTRY=in npm run test
COUNTRY=uk npm run test
COUNTRY=whatever npm run test
let json = require('config.json');
export const getCountryUrl = () => {
return json[Cypress.env().COUNTRY]['url']
}
{
"uk": {
"url": "https://uk-website"
},
"fr": {
"url": "https://fr-website"
}
}