【问题标题】:Protractor - How to use tags on Jasmine for e2e testningProtractor - 如何在 Jasmine 上使用标签进行 e2e 测试
【发布时间】:2020-07-06 22:13:48
【问题描述】:

我遇到了一些问题,我不知道该怎么做才能标记我想要运行的不同测试。

我想要的测试仅在我希望能够标记我想支付的付款是万事达卡、维萨卡或美国运通卡的最后才需要。我确实有一个测试可以执行详细信息页面,例如编写用户信息,选择发货,但最后我确实有多个选项,我想测试待测试的内容:

paymentPage.js

describe('Payment page', function () {
    paymentPage = new PaymentPage();

    // The details page is accessible by the specified URL
    it(`Credit Card - Has a form that can receive user data`, async function () {

        await paymentPage.creditCardPayment();

    });


     //Visa
    it('Enets payment', async function () {
            //TODO

    });

     //Amex
    it('Enets payment', async function () {
            //TODO

    });
});

如您所见,我想测试 3 个选项,因此每当我执行“量角器 e2e 运行万事达卡”等操作时,这意味着它应该运行第一个测试用例,如果我选择签证,则执行第二个测试用例,然后基本跳过其余部分。

但是,在进入付款页面之前,我确实有几个测试要执行,但它们都需要为每次付款都做同样的事情,这意味着付款前的所有测试用例每次都需要做完全相同的事情(所以我想我们只需要在支付时打标签,让脚本知道选择哪种支付方式)?

我怎样才能做某种标记,或者也许有人有另一种更好的解决方案?我可以选择我想要运行的支付提供商

编辑:

exports.config = {

    capabilities: {
        browserName: 'chrome',
        chromeOptions: {
            args: [
                'incognito', 'disable-extensions', 'start-maximized', 'disable-infobars', '--window-size=1920,1080'
            ]
        },
        loggingPrefs: { browser: 'ALL' },
        platform: 'ANY',
        version: ''
    },


    specs: [
        'pagesDesktop/testPage.js',
        'pagesDesktop/paymentPage.js'
    ],

    jasmineNodeOpts: {
        reporter: "mochawesome",
        defaultTimeoutInterval: 60000
    },

    SELENIUM_PROMISE_MANAGER: false,

    framework: 'jasmine',

    params: {
        cardType: {
        }
    }

};

describe('Payment page', function () {
    paymentPage = new PaymentPage();

    console.log(browser.params.cardType);

    if (browser.params.cardType === "mastercard") {
        // The details page is accessible by the specified URL
        it(`Credit Card - Has a form that can receive user data`, async function () {
            await paymentPage.creditCardPayment();
        });
    }

【问题讨论】:

  • if/else 条件?并使用参数启动量角器
  • 嗯,你是什么意思?我怎么能做到这一点等? @SergeyPleshakov

标签: selenium jasmine protractor tags


【解决方案1】:

只需添加 if/else 逻辑

describe('Payment page', function () {
    paymentPage = new PaymentPage();

    // The details page is accessible by the specified URL
    it(`Credit Card - Has a form that can receive user data`, async function () {

        await paymentPage.creditCardPayment();

    });


  if (browser.params.cardType === 'visa') {
    it('Enets payment', async function () {
            //TODO

    });
  } else if (browser.params.cardType === 'amex') {
     //Amex
    it('Enets payment', async function () {
            //TODO

    });
  }
});

您可以在此处How can I use command line arguments in Angularjs Protractor? 或此处阅读如何参数化 teste https://medium.com/@nicklee1/making-your-protractor-tests-data-driven-e3c9e2a5e4e7

【讨论】:

  • @ProtractorNewbie 检查链接,它拥有一切
  • 嗯,我相信这样做:params: { cardType: { mastercard, enets, installment } } 可能对我不起作用,因为我们里面没有任何价值观,对吧? - 我检查了你的链接,似乎它们里面只有值
  • 不,您可以使用传递参数的命令启动配置 -parames.cardType="amex"
  • 然后它返回:{ '0': 'm', '1': 'a', '2': 's', '3': 't', '4': 'e', '5': 'r', '6': 'c', '7': 'a', '8': 'r', '9': 'd' } :( - 我会更新我所做的:
  • 请检查我更新的帖子,也许我做错了什么:(
猜你喜欢
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2018-01-31
相关资源
最近更新 更多