当前,我们正在使用cypress来测试我们的应用程序。我们有2个环境,其中包含2个不同的api_Servers。我想在环境文件中定义它。我不确定如何在同一文件中定义两个URL。
例如
环境1:
baseUrl-https://environment-1.me/ Api_Serever-https://api-environment-1.me/v1
环境2:
baseUrl-https://environment-2.me/ Api_Serever-https://api-environment-2.me/v1
很少有测试用例依赖baseUrl,而有1个测试用例要检查API是否依赖于Api_Serever。
为解决此问题,我尝试在此链接https://docs.cypress.io/api/plugins/configuration-api.html#Usage之后的插件内的配置文件中设置baseUrl和Api_Serever。
我为2种环境创建了两个配置文件
{
"baseUrl": "https://environment-2.me/",
"env": {
"envname": "environment-1",
"api_server": "https://api-environment-1.me/v1"
}
}
另一个与此类似的文件,用于更改各个端点。
插件文件已被修改为
// promisified fs module
const fs = require('fs-extra')
const path = require('path')
function getConfigurationByFile (file) {
const pathToConfigFile = path.resolve('..', 'cypress', 'config', `${file}.json`)
return fs.readJson(pathToConfigFile)
}
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
// accept a configFile value or use development by default
const file = config.env.configFile || 'environment-2'
return getConfigurationByFile(file)
}
在测试用例中,无论哪个引用了我们使用visit('/')的baseUrl
当我们使用cypress run --env configFile = environment-2命令从命令行运行特定文件时,这很好用,因为visit('/')自动替换为相应的环境期望API测试用例。
我不确定应该如何修改API测试以调用API端点而不是基本URL。
有人可以帮忙吗?
谢谢, 印杜。
答案 0 :(得分:0)
如果我正确理解了您的问题,则需要使用不同的URL运行测试。可以在cypress.json或env文件中设置网址。 您可以按以下方式在cypress.json文件中配置网址吗?不过我还没有尝试过,你可以试一下吗。
{
"baseUrl": "https://environment-2.me/",
"api_server1": "https://api1_url_here",
"api_server2": "https://api2_url_here"
}
在测试调用中传递如下网址;
describe('Test for various Urls', () => {
it('Should test the base url', () => {
cy.visit('/') // this point to baseUrl configured in cypress.json file
// some tests to continue based on baseUrl..
})
it('Should test the api 1 url', () => {
cy.visit(api_server1) // this point to api server 1 configured in cypress.json file
// some tests to continue based on api server1..
})
it('Should test the api 2 url', () => {
cy.visit(api_server2) // this point to api server 2 configured in cypress.json file
// some tests to continue based on api server2..
})
})
答案 1 :(得分:0)
此问题已解决。
最好的方法是根据其文档(https://docs.cypress.io/api/plugins/configuration-api.html#Usage)的建议使用插件。
我保持与问题相同的结构,并在测试用例中使用 cy.request(Cypress.env('api_server'))
这解决了我的问题:)