seldom
seldom copied to clipboard
多线程执行main_extend.run_cases,发现连接了同一个浏览器
环境: win 本地起了jenkins , docker , grid
现状:
- jenkins 执行job时, 如果不走多线程, 用例能顺利执行完成
- jenkins 同时执行两个job, grid能成功分发到两台容器上分别执行 问题:
- jenkins 在一个job里用多线程执行 main_extend.run_cases, 会连接到同一个浏览器上,最后导致冲突,用例无法执行
以下是代码片段,求解…… 「我不需要seldom合并报告,所以不用在意报告合并的事,报告是我用另外的方式自己合并了」
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 我自己将结果写入了数据库,最后合并的报告页面也自己写了。
好的了解了