SeldomQA / seldom

Seldom automation testing framework based on unittest

Home Page:https://seldomqa.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

多线程执行main_extend.run_cases,发现连接了同一个浏览器

AweHenry opened this issue · comments

环境: win
本地起了jenkins , docker , grid

现状:

  1. jenkins 执行job时, 如果不走多线程, 用例能顺利执行完成
  2. jenkins 同时执行两个job, grid能成功分发到两台容器上分别执行
    问题:
  3. jenkins 在一个job里用多线程执行 main_extend.run_cases, 会连接到同一个浏览器上,最后导致冲突,用例无法执行

以下是代码片段,求解…… 「我不需要seldom合并报告,所以不用在意报告合并的事,报告是我用另外的方式自己合并了」

image

image

seldom WebUI 自动化测试运行过程中,共用一个浏览器驱动对象:Seldom.driver

如果你不考虑测试报告的合并。可以使用seldom 命令,seldom==2.10.7

import subprocess
import threading


def running1():
    subprocess.check_call([
        "seldom",  # seldom命令
        "--path", "./test_dir",  # 运行测试用目录
        "--browser", "chrome",  # 浏览器
        "--report", "result1.html"  # 测试报告(可以定义xml报告,容易合并)
    ], cwd="D:/github/seldom/demo"  # 进入执行用例的目录
    )


def running2():
    subprocess.check_call([
        "seldom",
        "--path", "./test_dir",
        "--browser", "firefox",
        "--report", "result2.html"
    ], cwd="D:/github/seldom/demo"
    )


def run():
    threads = []
    t1 = threading.Thread(target=running1, args=())
    threads.append(t1)
    t2 = threading.Thread(target=running2, args=())
    threads.append(t2)

    for t in threads:
        t.start()
    for t in threads:
        t.join()


if __name__ == '__main__':
    run()

seldom 命令更多用法: https://seldomqa.github.io/getting-started/seldom_cli.html

当然,这种方式之适合按照测试目录 test_dir 创建线程, 每个目录下面的用例数量不一样,线程分配不均。 你可以参考文档上面收集用例 的方法,把用例平均分配到 json 文件,每个线程执行一个json 文件中的用例。

请教一下,比较好奇用怎样的方式最后合并了报告 @AweHenry

@yongchin0821 我自己将结果写入了数据库,最后合并的报告页面也自己写了。

@yongchin0821 我自己将结果写入了数据库,最后合并的报告页面也自己写了。

好的了解了