Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
AweHenry opened this issue Sep 6, 2022 · 4 comments
Open

Comments

@AweHenry
Copy link

AweHenry commented Sep 6, 2022

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

现状:

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

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

image

image

@defnngj
Copy link
Collaborator

defnngj commented Sep 7, 2022

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 文件中的用例。

@yongchin0821
Copy link
Collaborator

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

@AweHenry
Copy link
Author

AweHenry commented Mar 9, 2023

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

@yongchin0821
Copy link
Collaborator

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

好的了解了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants