簡體   English   中英

TheIntern-確定動態測試生成的環境

[英]TheIntern - determining the environment for dynamic test generation

我遇到需要動態生成功能測試的情況。 基本上,我想使用BrowserStack在各種不同的環境上運行測試,但是我想根據是在台式機還是移動設備上注冊不同的測試套件。

這是文件中的一段代碼,可以幫助您開始工作,因此您可以了解我的工作方式:

define(function (require) {
    var registerSuite = require('intern!object');
    var assert = require('intern/chai!assert');
    var config = require('intern/dojo/node!../../node_modules/our-repo/config');
    // RIGHT HERE I NEED TO KNOW PLATFORM + BROWSER INFO!
    var our_sites = ['A', 'C', 'C', 'D'];
    for (let i=0; i<our_sites.length; i++) {
        homepage_basic_site_test_suites(registerSuite, our_sites[i], config, assert);
    }
});

然后,我運行配置,動態生成測試並調用registerSuite

我想要的是能夠傳遞另外一個參數-選擇的環境。

https://theintern.io/leadfoot/module-leadfoot_Server.html#getSessionCapabilities似乎它可以提供我需要的信息,但我不知道如何獲得它。

我對TheIntern的配置包括以下環境列表,並且我想知道在調用homepage_basic_site_test_suites()函數之前為特定的運行選擇了哪個環境:

environments: [
    {
        browserName: 'IE',
        version: ['11'],
        platform: ['WINDOWS']
    },
    {
        browserName: 'Edge',
        version: ['13', 'latest'],
        platform: ['WINDOWS']
    },
    {
        browserName: 'Firefox',
        version: ['54', 'latest'],
        platform: [ 'WINDOWS', 'MAC']
    },
    {
        browserName: 'Chrome',
        version: ['45', 'latest'],
        platform: ['WINDOWS', 'MAC']
    },
    {
        browserName: 'Safari',
        version: ['10.1', 'latest'],
        platform: 'MAC'
    },
    {
        browserName: 'iPhone',
        platform: 'MAC',
        device: ['iPhone 6'],
        realMobile: true
    },
    {
        browserName: 'iPad',
        platform: 'MAC',
        device: ['iPad 4th'],
        realMobile: true
    },
    {
        browserName: 'android',
        platform: 'ANDROID',
        device: ['Samsung Galaxy S5'],
        realMobile: true
    }
]

您可以從遠程會話獲取環境信息。 在套件生命周期方法或測試中,應使用this.remote.session.capabilities 但是,在調用registerSuite ,遙控器不可用。

您可以在套件本身(可以使用遙控器的地方)內添加測試:

registerSuite({
    name: 'my suite',

    before: function () {
        if (this.remote.session.capabilities.something) {
            // Test is from intern/lib/Test
            this.tests.push(new Test({
                name: 'a test',
                parent: this,
                test: function () {
                    // test function
                }
            });
        }
    },

    ...
});

另一種選擇是制作特定於遠程的功能套件,並使用特定於遠程的配置加載它們。 像,有一個Android的配置加載android特定的functionalSuites和一個iOS的配置加載iOS特定的functionalSuites 這些配置可以從中央配置繼承,以便大多數屬性將被共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM