我的规范文件涵盖了针对特定测试场景的50种不同测试用例。每个测试用例都包含在单独的 it 块中。 spec文件需要2小时才能执行。我想以某种方式对 it 块进行分类,以便它们在多个浏览器实例中并行运行。对于例如它应该并行运行(5 it 阻止* 10个浏览器实例)。我不想将 spec 文件分成不同的部分。有没有其他解决方案?
答案 0 :(得分:3)
当您决定执行测试用例时,请使用下面列出的任何配置。请参阅典型的conf.js
文件,然后选择conf.js文件中的任何配置。
exports.config = {
// The address of a running selenium server.
seleniumAddress: 'http://localhost:4444/wd/hub',
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
specs: ['spec1.js','spec2.js']
};
Type-1:单个浏览器实例:在a处启动一个浏览器实例 时间。
conf.js文件中的示例配置。
capabilities: {
browserName: 'chrome',
},
specs: ['spec1.js','spec2.js']
以上配置将启动chrome浏览器实例并逐个执行所有规范
sequestial --> [chrome] --> spec1.js --> spec2.js
Type-2:不同的浏览器实例将并行启动 在
spec:[]
标签中调整的规格将在每个标签中执行 浏览器的实例分开。
conf.js文件中的示例配置。
multiCapabilities: [
{ browserName: 'chrome', },
{ browserName: 'firefox', },
],
specs: ['spec1.js','spec2.js','spec3.js']
以上配置将启动chrome,firefox浏览器并并行执行每个浏览器实例中的所有规范。
--> [chrome] ---|--> spec1.js --> spec2.js --> spec3.js
|
parallel
|
--> [firefox] ---|--> spec1.js --> spec2.js --> spec3.js
类型-3:以下配置将帮助您执行不同的操作 不同浏览器实例中的规范集。
conf.js文件中的示例配置。
multiCapabilities: [
{
browserName: 'chrome',
specs:['spec1.js']
},
{
browserName: 'firefox',
specs:['spec2.js']
},
],
以上配置将启动chrome,firefox浏览器并在chrome中执行spec1.js
并在firefox实例中执行spec2.js
--> [chrome] ---|--> spec1.js
|
parallel
|
--> [firefox] ---|--> spec2.js
Type-4:使用相同的浏览器并行执行不同的spec文件。
考虑你的测试套装中有5个spec文件,你想要 并行执行一切。以下配置将帮助您 这样做。
conf.js文件中的示例配置。
capabilities: {
browserName: 'chrome',
specs: [
'spec1.js', 'spec2.js', 'spec3.js' , 'spec4.js' , 'spec5.js'
],
maxInstances : 5,
shardTestFiles: true
}
以上配置将启动5个chrome实例,每个规范将在这5个chrome实例中并行执行。
|-- [instance 1] --|--> spec1.js
|-- [instance 2] --|--> spec2.js
--> [chrome] ---|-- [instance 3] --|--> spec3.js
|-- [instance 4] --|--> spec4.js
|-- [instance 5] --|--> spec5.js
maxInstances
数字表示允许量角器创建的最大浏览器窗口数量。
例如,当maxInstances设置为10时,200个测试的测试套件将导致Protractor创建10个Chrome实例,每个实例运行20个测试,而没有shardTestFiles,这将是一个运行所有200个测试的Chrome实例。
答案 1 :(得分:1)
你无法运行"它"在同一个spec文件中并行阻止。替代解决方案是划分您的规范文件,例如$sql = "
SELECT
Clients.Id,
Clients.Rate,
Clients.Name,
Clients.onsite_block_hrs,
Clients.remote_block_hrs,
Clients.Net,
SUM(case WHEN Clients.onsite_block_hrs > 0 then Hours.Hours else 0 end) AS Onsite_Hours,
SUM(case WHEN Clients.remote_block_hrs > 0 then Hours.Hours else 0 end) AS Remote_Hours,
SUM(case WHEN DAY(Hours.Date) <= 15 && Clients.onsite_block_hrs > 0 then Hours.Hours else 0 end) AS First_Hours,
SUM(case WHEN DAY(Hours.Date) >= 16 && Clients.onsite_block_hrs > 0 then Hours.Hours else 0 end) AS Second_Hours,
Hours.Customer,
Hours.Date
FROM
Clients
LEFT JOIN
Hours ON Clients.Id=Hours.Customer
WHERE
(MONTH(Date) = MONTH(CURRENT_DATE()) AND YEAR(Date) = YEAR(CURRENT_DATE())) OR (onsite_block_hrs != 0 || remote_block_hrs != 0)
GROUP BY Id
ORDER BY Name";
$result = $conn->query($sql);
if ($result->num_rows > 0){
,spec1.js
和spec2.js
然后将其添加到conf.js文件
spec3.js
specs:['filePath/spec1.js','filePath/spec2.js','filePath/spec3.js'],
capabilities: {
shardTestFiles: true,
maxInstances: 5 //set this to amount you want running at once
}
param将接受数组,或者你可以使用specs
之类的通配符来运行该文件夹中的所有.js文件(确保它们是量角器测试用例)
filePath/*.js
将设置为一次运行的金额。我发现在一次运行多个实例时更容易使用无头模式,对于chrome,选项如下所示:
maxInstances