赞
踩
需要再conftest.py中重写pytest的相关的钩子函数
def pytest_addoption(parser):
"""执行测试用例时添加命令行参数"""
group = parser.getgroup("pytest-thread")
group.addoption("--current",default=None,help="运行的线程数量")
group.addoption("--runTask", default=None, help="运行的任务函数")
通过协程gevent实现并发执行测试用例函数代码
def run_test(items): # 执行测试用例的函数 for item in items:# items 是一个包含用例的列表 # 执行单条用例 item.ihook.pytest_runtest_protocol(item=item,nextitem=None) def pytest_runtestloop(session): """pytest用例执行的钩子函数 """ # 获取命令行传入的参数 count = session.config.getoption("--current") run_task = session.config.getoption("--runTask") # 根据参数拆分并发执行任务函数 if run_task=='mod': # 对用例以模块为单位进行拆分 # [{"模块1":[用例1,用例2,用例3]},{"模块2":[用例1,用例2,用例3]}] cases={} for item in session.items: # 获取用例所属的模块 module = item.module # 判断模块在列表中是否存在 if cases.get(module): # 如果存在,直接将用例加进去 cases['module'].append(item) else: # 如果没有,以模块作为key,用例作为value保存进去 cases['module']=[item] # 以模块为单位并发执行测试用例,一个模块一个并发 gs=[] for case_ in cases.values(): g = gevent.spawn(run_test,case_) gs.append(g) gevent.joinall(gs) return True
执行用例
import pytest
pytest.main(['--current=3','--runTask=mod'])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。