selenium grid3 + HTMLTestRunner + unittest 分布式如何实现并发呢
来源:9-12 改造异步装饰器记录异步测试执行过程与结果

紫陌翌晨
2021-04-20
托尼老师,你有解决方法吗,我试过很多方法都不行。
hub主节点启动:
java -jar C:\selenium-server-standalone-3.141.59.jar -role hub -host 0.0.0.0 -maxSession 10
虚拟机上注册了两个node节点:
java -jar C:\selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.15:4444/grid/register/
HTMLTestRunner好像没有支持多线程的方式执行案例,好像需要自己改写代码。但是我通过使用线程池的方式,是可以并发的,现在问题就是不知道如何改写HTMLTestRunner实现多线程运行,然后收集执行后的信息。
def case_run(thread_count=2):
"""案例执行"""
suite = unittest.TestSuite()
loader = unittest.defaultTestLoader
test_suite = loader.discover(CASE_PATH)
suite.addTest(test_suite)
res = unittest.TestResult()
with ThreadPoolExecutor(max_workers=thread_count) as te:
for case in suite:
te.submit(case.run, result=res)
print(res)
写回答
1回答
-
由于GIL的顽疾,不建议使用多线程,可以将线程池改成进程池,不同的进程分别对应不同的测试流程,包括启动、运行、输出报告。
使用多进程时,要注意函数和方法的编写,特别是参数的传递不能出现混乱,另外,多进程下需要重写启动webdriver服务的方法。
042021-11-16
相似问题