python-selenium并发执行测试用例(方法一 各模块每一条并发执行)

总执行代码:

# coding=utf-8
import unittest,os,time
import HTMLTestRunner
import threading
import sys
sys.path.append('C:/Users/Dell/Desktop/CARE/program')#使用编辑器,要指定当前目录,不然无法执行第20行代码


def creatsuite():
  casedir = []
  list = os.listdir(os.path.dirname(os.getcwd()))#获取当前路径的上一级目录的所有文件夹,这里可以改成绝对路径(要搜索的文件路径)
  for xx in list:
    if "baidu" in xx:
      casedir.append(xx)
  suite =[]
  for n in casedir:
    testunit = unittest.TestSuite()
    unittest.defaultTestLoader._top_level_dir = None

#(unittest.defaultTestLoader(): defaultTestLoader()类,通过该类下面的discover()方法可自动更具测试目录start_dir匹配查找测试用例文件(test*.py),

并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover)

    discover = unittest.defaultTestLoader.discover(str(n),pattern='tet_*.py',top_level_dir=None) 

    for test_suite in discover:
      for test_case in test_suite:
        testunit.addTests(test_case)
    suite.append(testunit)
  return suite, casedir

def runcase(suite,casedir):
  lastPath = os.path.dirname(os.getcwd())#获取当前路径的上一级
  resultDir = lastPath+"\\run\\report\\" #报告存放路径
  now = time.strftime("%Y-%m-%d %H.%M.%S",time.localtime())
  filename = resultDir + now +" result.html"
  fp = file(filename, 'wb')
  proclist=[]
  s=0

  for i in suite:
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=str(casedir[s])+u'测试报告',description=u'用例执行情况:')
    proc = threading.Thread(target=runner.run,args=(i,))
    proclist.append(proc)
    s=s+1
  for proc in proclist:
    proc.start()
  for proc in proclist:
    proc.join()
  fp.close()

if __name__ == "__main__":
  runtmp=creatsuite()
  runcase(runtmp[0],runtmp[1])

 

描述: 使用这个总执行文件,可以多进程 同时开始每个模块的测试用例(每个模块同时一条接着一条执行)

 

转载于:https://www.cnblogs.com/kaibindirver/p/7492963.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用 pytest 的 `pytest-xdist` 插件来实现并发执行多条用例。同时,您可以使用一个账号管理类来控制账号的登录和归还。 首先,安装 `pytest-xdist` 插件: ```shell pip install pytest-xdist ``` 然后,创建一个账号管理类,例如 `AccountManager`: ```python class AccountManager: def __init__(self, accounts): self.accounts = accounts self.used_accounts = [] def get_account(self): account = self.accounts.pop(0) self.used_accounts.append(account) return account def release_account(self, account): self.used_accounts.remove(account) self.accounts.append(account) ``` 在测试文件中,您可以使用 `pytest.fixture` 来创建一个共享的账号管理实例,并在测试用例中使用它来获取和释放账号: ```python import pytest @pytest.fixture(scope="session") def account_manager(): # 创建账号列表 accounts = ["account1", "account2", "account3"] # 创建账号管理实例 manager = AccountManager(accounts) yield manager # 测试会话结束后,归还所有账号 for account in manager.used_accounts: manager.release_account(account) def test_case(account_manager): # 获取账号 account = account_manager.get_account() # 使用账号执行测试逻辑 # ... # 释放账号 account_manager.release_account(account) ``` 接下来,在运行测试时,您可以使用 `pytest-xdist` 插件来指定并发执行的数量。例如,使用 `-n` 参数来指定使用 2 个进程并发执行: ```shell pytest -n 2 ``` 这样,每个用例都会获取一个账号进行登录,并在执行完毕后归还账号,保证下一个用例可以继续使用账号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值