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回答

托尼老师

2021-04-22

由于GIL的顽疾,不建议使用多线程,可以将线程池改成进程池,不同的进程分别对应不同的测试流程,包括启动、运行、输出报告。

使用多进程时,要注意函数和方法的编写,特别是参数的传递不能出现混乱,另外,多进程下需要重写启动webdriver服务的方法。

0
4
托尼老师
回复
qq_Qian儭_03543846
可以用协程来做分布式或并发。
2021-11-16
共4条回复

Python自动化测试开发实战,能帮你就业的测试课

开发高扩展、高可用的自动化测试框架,利用好测试自动化技术。

445 学习 · 157 问题

查看课程