如何在单个测试套件中测试具有不同基本 URL 的两个系统?

时间:2021-07-01 05:57:42

标签: cypress

我正在处理一个具有多个系统的项目。 (例如:管理门户、客户端门户等)并且每个系统中都有不同的环境(例如:dev env、QA env 等)有一个单独的 QA 存储库用于 e2e 测试,我需要使用不同的系统来测试不同的系统单个测试套件中的网址。

这个问题 Cypress baseUrl configuation 建议使用 cypress.json 中的多个参数来表示不同的系统 URL 并使用 Cypress.config() 来引用正确的 URL 的方法。但是,该方法没有使用 Cypress 的 baseURL 属性。

赛普拉斯是否有任何内置功能来支持在单个测试套件中测试多个系统? (例如,从测试代码或类似内容中切换 baseURL

1 个答案:

答案 0 :(得分:4)

我猜您想使用 Cypress.config('baseUrl', <value>)beforeEach() 中设置 baseUrl。

您需要选择如何指示您正在测试的系统,也许不同的脚本以环境变量开始

cypress open --env system=admin,environ=qa

然后在测试中

const baseUrls = {
  'admin-qa': 'http:/example.com'
  ...
}

beforeEach(()=> {
  const baseUrl = baseUrls[`${Cypress.env('system')-${Cypress.env('qa')}`];
  Cypress.config(baseUrl)
})

我需要在一个测试套件中使用不同的 URL 来测试不同的系统

这表明您希望在一次运行中针对所有网址运行测试。

如果是这样,您可以迭代一组网址

const urls = [
  'http://admin-dev.com', 
  'http://admin-qa.com',
  'http://client-dev.com', 
  'http://client-qa.com'
]

urls.forEach(url => {

  describe(`Testing ${url}`, () => {

    before(() => Cypress.config('baseUrl', url))

    it('tests that thing', ...

如果任何测试特定于一种环境,即必须始终具有客户端开发配置,您可以在测试级别应用 baseUrl

it('tests the other thing', { baseUrl: 'http://client-dev.com' }, () => {
  ...
})