关键字模型改造成多进程同时执行多个测试机的问题

来源: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差不多了么

0
0

Python主讲移动端自动化测试框架Appium

APP自动化基础知识、po模型、关键字模型、服务自动化、持续集成

1508 学习 · 1333 问题

查看课程