当前位置: 首页 > 知识库问答 >
问题:

量角器.试验套件.不按顺序运行

庞鸿骞
2023-03-14
beforeAll(function () { 
    originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
    jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
    browser.waitForAngularEnabled(false);
    browser.get(env.appUrl);
    browser.getTitle().then(function (title) {
        expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
    });
    browser.waitForAngularEnabled(true);
    loginPage.login();

    commonPage.navigateToUsers();
    usersPage.deleteUsers(name); 
});

describe('Create Users', function () {
it("Create user", function () {
something 
});

it("Create user", function () {
something 
});
});

规格2.js

beforeAll(function () { 
    originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
    jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
    browser.waitForAngularEnabled(false);
    browser.get(env.appUrl);
    browser.getTitle().then(function (title) {
        expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
    });
    browser.waitForAngularEnabled(true);
    loginPage.login();

    commonPage.navigateToAccounts();
    accountsPage.deleteAccounts(number); 
});

describe('Create Accounts', function () {
it("Create Savings", function () {
something 
});

it("Create current account", function () {
something 
});

});

conf.js

var env = require('./Utils/env.js');
var HTMLReport = require('protractor-html-reporter-2');
var JasmineReporters = require('jasmine-reporters');

exports.config =
    {

        baseUrl: 'http://localhost:9999',
        directConnect: true,
        framework: 'jasmine2',

        suites: {
            1sp: './mysuites/1Spec.js',
            2sp: './mySuites/2Spec.js',
        },

        capabilities: {
            'browserName': env.browserName,
            'platform': env.osName,

            //Closes any existing browsers
              'shardTestFiles': false,
              'maxInstances': 1
        },

        params: {
            tempVar: false
        },

        onPrepare: async () => {
            global.result = false;

            var fs = require('fs-extra');
            fs.emptyDir('./Reports/Screenshots/', function (err) {
                console.log(err);
            });
            jasmine.getEnv().addReporter({
                specDone: function (result) {
                    if (result.status == 'failed') {
                        browser.getCapabilities().then(function (caps) {
                            browser.takeScreenshot().then(function (png) {
                                var stream = fs.createWriteStream('./Reports/Screenshots/' + env.browserName + '-' + result.fullName + '.png');
                                stream.write(new Buffer(png, 'base64'));
                                stream.end();
                            });
                        });
                    }
                }
            });

            var width = 1600;
            var height = 1200;
            browser.driver.manage().window().setSize(width, height);

            //Html reporter
            jasmine.getEnv().addReporter(new JasmineReporters.JUnitXmlReporter({
                consolidateAll: true,
                savePath: './Reports',
                filePrefix: 'xmlresults'
            }));
        },

        onComplete: async () => {

            var capsPromise = browser.getCapabilities();
            capsPromise.then(function (caps) {
                testConfig = {
                    reportTitle: 'UI Test Execution Report',
                    outputPath: './Reports',
                    outputFilename: 'UI Test Results',
                    screenshotPath: './screenshots',
                    testBrowser: 'FireFox',
                    modifiedSuiteName: false,
                    screenshotsOnlyOnFailure: true,
                    testPlatform: env.osName
                };
                new HTMLReport().from('./Reports/xmlresults.xml', testConfig);
            });
        }
    };

共有1个答案

夹谷衡
2023-03-14

经过一些调查,我能够重新创建您的问题,它似乎与茉莉如何处理之前所有的钩子有关。这里和这里有一个完整的讨论,但是基本上(而且令人惊讶的是),您的测试文件中没有在description中声明的任何内容都将在任何测试执行之前被执行,包括beforeAll钩子。这让我很惊讶,因为我几乎可以肯定我以前用过Outser描述的,没有问题,但现在无法验证。

但是,如果您在description中声明了beforeAll钩子,那么它将被挂起并在测试之前执行,与您当前期望它现在的行为完全相同。

您是否可以尝试在以下描述中移动您的beforeAll块:

describe('Create Accounts', function () {
   beforeAll(function () { 
       originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
       jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
       browser.waitForAngularEnabled(false);
       browser.get(env.appUrl);
       browser.getTitle().then(function (title) {
           expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
       });
       browser.waitForAngularEnabled(true);
       loginPage.login();

       commonPage.navigateToAccounts();
       accountsPage.deleteAccounts(number); 
   });

   it("Create Savings", function () {
       something 
   });

   it("Create current account", function () {
      something 
   });

});
describe('Create Users', function () {
    beforeAll(function () {
        originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
        jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
        browser.waitForAngularEnabled(false);
        browser.get(env.appUrl);
        browser.getTitle().then(function (title) {
            expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
        });
        browser.waitForAngularEnabled(true);
        loginPage.login();

        commonPage.navigateToUsers();
        usersPage.deleteUsers(name);
    });

    it("Create user", function () {
        something
    });

    it("Create user", function () {
        something
    });
})
 类似资料:
  • 我有以下testng.xml文件。我希望testng按顺序运行这些测试。我不想将这些测试中的每一个分开到一个新文件中。 我在套件级别上尝试了parallel=“tests”、“classes”、“methods”和thread count=1的组合,但都没有成功。

  • 我使用maven failsafe插件触发testng套件,其配置与 但是套件或其中的测试没有按照正确的顺序执行。有没有办法规定套房应按以下顺序执行 某个套房。xml 另一套。xml 还有一套。xml 我不关心套件中测试的执行顺序,但只希望在前一个套件完成后执行一个套件。是否有一些配置可用于实现相同的功能?

  • 我希望我所有的课程都按顺序进行。下面是我的testng xml文件: 我试过在套房里用姓名标签来做:

  • 我想能够使用特定的浏览器配置运行特定的套件,这可能吗?。我尝试遵循代码,但不幸的是,当套件被指定时,capability字段被忽略,并且两个测试套件都在两个浏览器配置中执行。

  • 问题内容: 我有一个要按日期在Angular.js中排序的数组: 列表不正确。我认为日期格式是原因吗? 日期格式为: 问题答案: 为了正常工作,您需要使用控制器中的对象包装字符串日期。 例如:

  • 问题内容: 我最近使用量角器选择了一个项目。 我很难理解 套件和规格之间 的 区别 。当我运行测试的文件夹后,我也遇到了套件的问题,该文件夹运行后,我运行了另一个测试文件夹,但它未能通过所有测试。下面列出的是任何帮助或帮助,都非常有用。 例: 问题答案: 套件对于组织测试非常有用。 实际上,问题归结为套件和测试用例之间的差异。引用维基百科“测试套件”的定义: 旨在用于测试软件程序以表明其具有某些特