2017-08-31 2 views
0

Ich habe eine Situation, in der ich dynamisch Funktionstests generieren muss. Grundsätzlich möchte ich BrowserStack verwenden, um meine Tests in verschiedenen Umgebungen auszuführen, aber ich möchte eine andere Testsuite registrieren, je nachdem, ob ich auf dem Desktop oder auf dem Mobilgerät arbeite.TheIntern - Bestimmen der Umgebung für dynamische Testgenerierung

Hier ist ein Ausschnitt von Code aus der Datei, die Dinge weg tritt, so dass Sie eine Vorstellung davon bekommen, wie ich es werde:

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); 
    } 
}); 

ich dann durch die Config laufen, dynamisch Tests zu erzeugen und rufen registerSuite.

Was ich möchte, ist in der Lage, einen weiteren Parameter übergeben - die Umgebung, die gewählt wurde.

https://theintern.io/leadfoot/module-leadfoot_Server.html#getSessionCapabilities Scheint so, als würde es die Informationen liefern, die ich brauche, aber ich weiß nicht, wie ich es bekommen kann.

Meine Config für Man lernt nie aus der folgenden Liste von Umgebungen umfasst, und ich möchte wissen, was man für einen bestimmten Lauf wurde die homepage_basic_site_test_suites() Funktion vor dem Aufruf gewählt: von

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 
    } 
] 

Antwort

1

Sie Umgebungsinformationen erhalten kann die Fernsitzung. In einer Suite-Lebenszyklus-Methode oder einem Test würden Sie this.remote.session.capabilities verwenden. Die Fernbedienung ist jedoch nicht verfügbar, wenn registerSuite aufgerufen wird.

Sie könnten hinzufügen Tests innerhalb der Suite selbst, wo die Fernbedienung verfügbar:

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 
       } 
      }); 
     } 
    }, 

    ... 
}); 

Eine weitere Option Remote-spezifische funktionale Suiten zu machen wäre und laden sie fern spezifische Konfigurationen verwenden. Wie, haben Sie eine Android-Konfiguration, die Android-spezifische functionalSuites lädt, und eine iOS-Konfiguration, die iOS-spezifische functionalSuites lädt. Diese Konfigurationen können von einer zentralen Konfiguration erben, sodass die meisten Eigenschaften gemeinsam genutzt werden.

Verwandte Themen