关键字模型改造成多进程同时执行多个测试机的问题
来源:6-12 关键字模型之判断元素是否存在回写结果

B4O
2019-07-30
1.多进程同用一个测试xls写结果有问题,所以也改成了多个
2.RunMain改成如下的方式,主要问题是,如果进程并发执行时只有一台手机界面正常同步显示(另外一台app启动起来就界面停留在第一页),但是两个xls里面都写入了结果。如果 增加 j.join() 让进程按顺序一个一个执行,两台手机运行测试都正常界面都同步显示整个过程,麻烦老师看看这个问题
def run_method(j):
base_driver = BaseDriver()
driver = base_driver.android_driver(j)
data = GetData('../config/case_' + str(j) + '.xls', j)
action_method = ActionMethod(driver, data)
lines = data.get_case_lines()
for i in range(1, lines):
handle_step = data.get_handle_step(i)
element_key = data.get_element_key(i)
handle_value = data.get_handle_value(i)
expect_key = data.get_expect_element(i)
expect_step = data.get_expect_handle(i)
# input() login_button
# input str
# None
excute_method = getattr(action_method, handle_step)
if element_key != None:
excute_method(element_key, handle_value)
else:
excute_method(handle_value)
if expect_step != None:
expect_result = getattr(action_method, expect_step)
result = expect_result(expect_key)
if result:
data.write_value(i, u'通过', j)
else:
data.write_value(i, u'失败', j)
if __name__ == '__main__':
server = Server()
server.kill_server()
server.main()
processes = []
for j in range(len(server.device_list)):
t = multiprocessing.Process(name=u'第'+str(j)+u'手机', target=run_method, args=(j,))
processes.append(t)
for j in processes:
j.start()
#等待子进程执行
j.join()
for s in processes:
while s.is_alive():
time.sleep(2)
server.kill_server()
写回答
1回答
-
Mushishi
2019-07-30
不建议这么做,你为什么不思考一下在关键字模型的基础之上引入ddt驱动,然后再把unittest映入,这样你就和po差不多了么
00
相似问题