繁体   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